初级会员
- 积分
- 58
- 金钱
- 58
- 注册时间
- 2021-12-17
- 在线时间
- 24 小时
|
5金钱
关于定时器输出PWM波在STM32F103RCT6Mini板的例程里面, TIM3_CH1是复用PA8引脚,板子上的LED0接在PA8上,例程里面就打开定时器使能和PA8使能,就没了。
在STM32F407ZGT6最小核心板的历程里,TIM14_CH1是复用PF9引脚,板子上的LED0接在PF9上,例程里不仅打开定时器使能和PA8使能,还有一句GPIO_PinAFConfig(GPIOF,GPIO_PinSource9,GPIO_AF_TIM14); //GPIOF9复用为定时器14。
请问
1)都是引脚复用为定时器,为啥F103 Mini板例程里就没有这句GPIO_PinAFConfig(),而F407有?
2)在配置定时器输出的PWM波形的GPIO口两个代码有区别,适合这个区别有关系吗?
3)STM32F407最小系统板开发指南-库函数版本PDF中第十三章 PWM输出实验,211页有一句,“要使用TIM14,我们必须先开启TIM14的时钟,这点相信大家看了这么多代码,应该明白了。这里我们还要配置PF9为复用(AF9)输出,才可以实现TIM14_CH1的PWM经过PF9输出。” AF9是什么?
————————————————————————————————————————
这是F103Mini板的代码
/*1 使能定时器1时钟 使能GPIO*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能时钟TIM1,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIOA。Mini板的LED0连接在PA8上,所以需要开启GPIOA时钟
/*2 配置定时器输出的PWM波形的GPIO口*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //赋值结构体 LED0连接PA8
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //赋值结构体 复用推挽输出 PA8是也是复用TIM1_CH1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //赋值结构体 IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //引用结构体 根据设定参数初始化PA8
————————————————————————————————————————
————————————————————————————————————————
这是F407最小核心板的代码
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14,ENABLE); //TIM14时钟使能
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //使能GPIOF时钟
GPIO_PinAFConfig(GPIOF , GPIO_PinSource9 , GPIO_AF_TIM14); //GPIOF9复用为定时器14
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //GPIOF9
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //速度100MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF,&GPIO_InitStructure); //初始化PF9
————————————————————————————————————————
|
最佳答案
查看完整内容[请看2#楼]
1:F103引脚复用使用的是 __HAL_AFIO_REMAP_TIM3_ENABLE();来开启复用时钟,F1跟F4系列是有区别的
2:配置IO口输出PWM没区别,IO口被占用就复用别的IO口就行,具体参考芯片手册的IO表,能复用成哪几个IO使用
3:AF9是IO口复用,是一个宏定义,表示将 GPIO 引脚复用为定时器 14(TIM14)的相关功能。不同的复用功能有不同的编号,AF9就是指定这个复用功能与定时器 14 相关联。具体查看F4的芯片手册你就知道了,F1没有那么复杂
|