蓝桥杯STM32G431RBT6学习——定时器PWM输出
前言
PWM波输出作为定时器的一个常用功能,也属于高频的考点。从数据手册的定时器解析可以了解到(上篇描述):除了基本定时器(TIM6、7)外,其他所有定时器均能进行PWM信号输出。
从数据手册的P61~P66页可以清楚得查看定时器的各个通道所绑定的引脚(清楚个JB)
PA组引脚外设分布
PB组引脚外设分布
PC组引脚外设分布
PD组引脚外设分布
PE组引脚外设分布
STM32CubeMX配置
在正式比赛中都会要求PWM输出所使用的具体引脚,可以通过在CubeMX中查看这些引脚都支持哪些定时器,直接点击芯片的引脚,在弹出的列表中查看。
此处以PA6为例,该引脚支持TIM16的通道1及TIM3的通道1,在使用时进行合理选择即可。
此处使用TIM3的通道1,选择其时钟源为内部时钟源,并将通道1使能为PWM输出。
配置其频率及初始占空比
定时器频率 = 80MHZ/分频系数/计数值
0<占空比<计数值
Keil代码编写
PWM输出相关API:
启动/暂停PWM输出
依旧不理解此处为何使用阻塞模式
HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
HAL_StatusTypeDef HAL_TIM_PWM_Stop(TIM_HandleTypeDef *htim, uint32_t Channel);
参数1:所使用的定时器类型指针(句柄),于CubeMX生成的定时器.h文件中定义;
参数2:所使用的通道号(例:TIM_CHANNEL_1)
设置PWM占空比
此处貌似并非真正的函数,底层是直接操作寄存器进行宏定义(C语言知道不足)
__HAL_TIM_SetCompare(__HANDLE__,__CHANNEL__,__COMPARE__);
参数1:所使用的定时器类型指针(句柄),于CubeMX生成的定时器.h文件中定义;
参数2:所使用的通道号(例:TIM_CHANNEL_1);
参数3:占空比,大小应处于0到计数值(CubeMX配置)之间
后记
强推一下逻辑分析仪的妙用,此物甚至可以直接作为简单示波器使用,配置一下就可以查看波形频率,周期等数据,且携带体积超小。