CW32-IOT-EVA评估板 学习记录

套件产品介绍:

http://www.fretech.cn/teamview_6439239.html

CW32_IOT_EVA 物联网开发评估套件 资料包V6:

https://cloud.scumaker.org/s/aqXdcffdMpHkyzA

EVA? :yum:

新建工程教学:

小白从0学习CW32(这个系列是官方对这个开发板的教学):

使用 Keil5 这个软件,对于被 Jetbrains 全家桶惯坏了的我来说是真的难用,没有代码补全,没有自动补全括号,没有格式化… 这些都需要自己去设置

推荐一个 Keil5 代码格式化的配置教程,使用的 AStyle 格式化工具:

开发套件中是附带了一个DAP Link烧录器的,连接方式如下:


另外注意,烧录器需要在 ARM 模式下工作(蓝灯会亮),如果只亮了红灯说明需要在上电时用杜邦线短接 TX 和 GND 引脚,上电后蓝灯会亮,此时再拔掉短接用的杜邦线即可。

如何使用例程愉快玩耍:

例程都在这里:

image

点进实验文件夹后,双击工程文件打开 keil5:

CW32 中的 GPIO 初始化

cw32f030_gpio.h 中可以看到定义:

  typedef struct
  {
    uint32_t Pins;
    uint32_t Mode;
    uint32_t IT;
    uint32_t Speed;
  } GPIO_InitTypeDef;

下面我们看看这些变量都有哪些可选项:

  • Pin : 指定的引脚号,右值表达式可以是 GPIO_PIN_0 ~ GPIO_PIN_15, GPIO_PIN_All 任意相或

  • Mode: 引脚的模式(作为中断时还有更多的选项)

    GPIO_MODE_INPUT 浮空输入模式:电平状态取决于GPIO外部的电平状态;若在GPIO外部的引脚悬空时,读取结果是不确定的。
    GPIO_MODE_INPUT_PULLUP 输入上拉
    GPIO_MODE_INPUT_PULLDOWN 输入下拉
    GPIO_MODE_OUTPUT_PP 推挽(Pull)输出模式(输出较大电流):推拉输出 既提高电路的负载能力,又提高开关速度。
    GPIO_MODE_OUTPUT_OD 开漏(Drain)输出模式(一般外接上拉电阻,如果外部不接上拉电阻只能输出低电平),可用于不同电压的系统之间的通信
    GPIO_MODE_ANALOG 复用模拟输入输出模式(ADC/DAC专用)

假设有一个GPIO口接到了 一个按键的一端,在此时:
如果按键的右端接正电源,那么就要 为 GPIO_PULLDOWN(下拉模式),因为这样才能使得按键按下去的时候,能把I / O脚拉高,否则按键的功能等于摆设。
同理,如果按键另一端接地,我们就要设置为GPIO_PULLUP(上拉模式)了。

  • IT:中断

    GPIO_IT_NONE 无中断
    GPIO_IT_RISING 上升沿中断
    GPIO_IT_FALLING 下降沿中断
    GPIO_IT_HIGH 高电平中断
    GPIO_IT_LOW 低电平中断

  • Speed:IO口速率(I/O口驱动电路的响应速度)
    当STM32的GPIO端口设置为输出模式时,通过选择速度来选择不同的驱动电路,达到最佳的噪声控制和降低功耗的目的。(高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。)

    GPIO_SPEED_LOW IO 口响应速度慢
    GPIO_SPEED_HIGH IO 口响应速度快


看到 Mode 的时候你是不是懵逼了:dizzy_face:,浮空,推挽和开漏都是什么?

这里引入一个视频介绍:

总结:

CW32 中的时钟初始化

CW32无刷电机训练营:

CW32生态社区事务表:

lceda上开源的CW32F030C8T6单片机核心板,设计为了Pin对Pin替换STM32F103C8T6核心板:

介绍视频: