OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 236|回复: 2

为什么F103输出PWM例程没有GPIO_PinAFConfig()

[复制链接]

14

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2021-12-17
在线时间
24 小时
发表于 2024-12-17 17:29:30 | 显示全部楼层 |阅读模式
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没有那么复杂
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
329
金钱
329
注册时间
2023-5-29
在线时间
119 小时
发表于 2024-12-17 17:29:31 | 显示全部楼层
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没有那么复杂
回复

使用道具 举报

2

主题

449

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4225
金钱
4225
注册时间
2018-5-14
在线时间
917 小时
发表于 2024-12-18 09:20:08 | 显示全部楼层
官方有两本手册,一本是数据手册,一本书参开手册。参考手册里对每个外设和外设寄存器都有详细说明,但是GPIO的复用表并不在参考手册里,而再数据手册中。数据手册的引脚定义章节里有个表格,列举了不同功能时的AF设置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-1-19 02:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表