打印
[研电赛技术支持]

GD32F450 PWM呼吸灯

[复制链接]
1448|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在翻阅GD32官方例程的时候,我突然发现小红板的LD6即PB3是挂载在PWM通道上面的,得知这点之后我大喜,这样的话我就可以玩玩PWM呼吸灯的小实验了。
    由于PWM是基于定时器的,因此在使用PWM之前必须初始化定时器。这里PB3是TIM1_CH1,即定时器1的PWM通道1,我们就初始化这个通道就足够了。GD32的库与STM32的库非常相似,许多参数的设置方式都差不多,如分频数、重载值、增量计数模式、边缘技术模式等等。除此之外,还要初始化PB3为AF1,至于为什么是AF1而不是AF2、AF3,我也不知道,具体要查查官方的手册,现在只需要照着官方例程来走就好了。

   
初始化好定时器和引脚之后,就可以通过设置比较值来直接改变PWM波的占空比,也就可以直接控制LED灯的明亮程度了,这里不多说,大家看代码吧。




本文转载于GD32F450 PWM呼吸灯
http://www.cirmall.com/bbs/thread-95853-1-1.html
(出处: http://www.cirmall.com/bbs/)

使用特权

评论回复
沙发
castle520| | 2020-11-9 21:05 | 只看该作者
我来解释下为什么是AF1而不是AF2、AF3:
除了用作通用 IO 口以外,所有的 GPIO 都有备用功能。

对于 GD32F10x/20x/30x/403/E10x 系列 MCU,用户可通过软件将某一个 GPIO 配置为复用模式,
然后再使能相应外设即可使用 IO 对应的复用功能。

对于 GD32F1x0/3x0/4xx/E23x 系列 MCU,用户可通过软件将某一个 GPIO 配置为复用模式,同
时还需要设置 GPIO 备用功能选择寄存器选择 16 个备用功能中的一个。以 GD32F130 为例,说
下具体的配置流程。

(1) 设置 GPIO 模式 gpio_mode_set
gpio_mode_set函数原型为:
void gpio_mode_set(uint32_t gpio_periph, uint32_t mode, uint32_t pull_up_down, uint32_t pin)
{
       xxx
       xxx
}
其中形参gpio_periph为需要设置的GPIO口组,其对应的实参为GPIOx(x = A,B,C,D,E,F,G),形参
mode为需要设置的GPIO模式,对应的实参为:
      GPIO_MODE_INPUT(输入模式)
      GPIO_MODE_OUTPUT(
输出模式)
      GPIO_MODE_AF(
复用模式)
      GPIO_MODE_ANALOG(
模拟模式)
形参pull_up_down为GPIO的上下拉设置,对应的实参为:
      GPIO_PUPD_NONE(无上下拉)
      GPIO_PUPD_PULLUP(
上拉)
      GPIO_PUPD_PULLDOWN(
下拉)
形参pin为pin脚号,实参为GPIO_PIN_x(x=0..15)。
(2) 设置 AF 类型 gpio_af_set
当需要将GPIO设置为复用模式时,除了调用gpio_mode_se设置GPIO模式外,还需要调用函数
gpio_af_set进行复用类型的设置。 gpio_af_set函数原型为:
void gpio_mode_set(uint32_t gpio_periph, uint32_t alt_func_num, uint32_t pin)
{
     xxx
     xxx
}
其中形参gpio_periph为需要设置的GPIO口组,其对应的实参为GPIOx(x = A,B,C,D,E,F,G),形参
alt_func_num为需要设置复用类型,对应的实参为:
      GPIO_AF_0(复用类型0)
      GPIO_AF_1(复用类型1)
      GPIO_AF_2(复用类型2)
      GPIO_AF_3(复用类型3)
      GPIO_AF_4(复用类型4)
      GPIO_AF_5(复用类型5)
      GPIO_AF_6(复用类型6)
      GPIO_AF_7(复用类型7)
F1x0、 F3x0、 F4xx(F405\F407\F450)、 E23x系列MCU的GPIO的复用类型可以从对应MCU的
Datasheet中查得,如GD32F130系列的复用类型表如下图(部分截图):



形参pin为pin脚号,实参为GPIO_PIN_x(x=0..15)。

根据以上介绍,如设置PA0为复用模式,且设置功能为USART0_CTS功能,函数调用如下:
gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_NONE,GPIO_PIN_0)
gpio_af_set (GPIOA,GPIO_AF_1,GPIO_PIN_0);



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

90

帖子

0

粉丝