目录
美好的教学从点灯开始
第一次弄教学,如果错误还请网友们指正
准备阶段
本次教学使用的开发板是NUCLEO-G431RB,其它板子同样适用。
本次任务的要求是,通过定时器实现LED的频闪。
设计阶段
原理图
想要点亮LED需要先看原理图
本次演示频闪的LED是上图的LD2,LD2右端接着3V3(高电平),LD2左侧接着三极管,我们需要让三极管导通,实现LD2左侧接地,从而实现让LD2导通的状态,由上图看出需要使用到开发板上的PA5输出高电平。
简单说一下三极管,三极管由基极(b)对应图中的1、集电极(c)对应图中的3、发射极(e)对应图中的2组成,当给基极高电平时,集电极和发射极导通。
由上面分析得到只要给基极高电平既可实现让LD2导通,再来看看怎么实现频闪,使用STM32定时器的计数功能可以实现,我们需要先确定单片机的主频率,然后根据预分频系数和重装载寄存器系数,来算出频闪的频率。公式是
频闪频率=主频/(预分频+1)/重装载值
CubeIDE/MX配置
选择芯片型号
输入项目名称
配置主频72M
选择PA5,配置为低电平,重命名为LED1
选择外部高速时钟
![](https://i-blog.csdnimg.cn/direct/72056f7f78ee400c9d963406439eb8fc.png)
配置允许仿真
配置使用内部时钟,配置预分频系数为7199,重装载值10000,这样由公式得到频闪频率为,72000000/(7199+1)/10000=1s一秒一次。
去NVIC中勾选TIM3中断
勾选上图选项,显示出代码的.h文件
选择使用LL库,实现GPIO的跳变。
选择上图框的图标生成代码,或者ctrl+s生成代码
代码部分
先去tim.c中天下下列代码,启动定时器计数,使能定时器中断。
去中断代码中找定时器中断函数,在中断函数中添加判断中断和清除中断标志位函数,以及触发电平反转函数。
点击小锤子编译,没有错误就点击播放按钮烧录
选择烧录仿真器,选好后点OK就行了。
效果展示
实现LED1s电平变化一次,如下所示