江协STM32学习笔记:PWM驱动LED

前言

声明一下:

这是我观看了b站江协科技的视频之后做的学习笔记,怕以后忘了,所以标了原创。

发出来的原因是因为写完之后也要给别人发过去看,草稿模式发过去看不了,所以才发出来。 

有些地方文字截图是因为连贯性很大,我怕我以后看不懂了,所以一块截图了,望理解。

特此说明:本文章所有内容全部都来自b站江协科技。

PWM驱动LED

接线图,根据接线图,配置接线图

代码部分

还是在Hareware里面创建PWM文件

根据这个图来配置

第一步:开启RCC时钟,把要用得TIM外设和GPIO外设的时钟打开。

第二步:配置时基单元,和之前的时钟源选择。

第三步:配置输出比较单元,包括CCR的值,输出比较模式,极性选择,输出使能这些参数,也是结构体统一配置

第四步:配置GPIO,把PWM对应的GPIO口,初始化为复用推挽输出的配置

第五步:配置运行控制,启动计数器,这样就能输出PWM了

这是配置流程

现在来看库函数里对应的函数

先看这四个函数,就是用来配置输出比较模块的

OC就是Ouput Compare,输出比较,就是这块

它们的参数:第一个TIMx,选择定时器,第二个结构体,就是输出比较的参数

然后下面

这个是用来是输出比较结构体赋一个默认值的。

到整理,输出比较的配置,就已经完成了

下面的函数是一些小功能和运行时更改参数的函数了

这里的四个函数,这是用来配置强制输出模式的,如果你想在运行中想要暂停输出波形并且强制输出高或低电平,可以用这个函数,了解一下就行,不需要掌握。

这四个函数,是用来配置CCR寄存器的预装功能的,就是你写入的值不会立即生效,而是在更新事件才会生效,了解即可。

然后是这四个函数,是用来配置快速使能的,了解即可

这四个函数,也不需要掌握。

这些函数,是用来单独设置输出比较的极性的,有N的是高级定时器里互补通道的配置,OC4没有互补通道,所以就没有OC4N的函数。

一般来说,结构体里的参数,都会有一个单独的函数可以进行更改,那几个函数就是用来单独更改输出极性的

这两个函数是用来单独修改输出使能参数的

这个参数是用来选择输出比较模式

这个是用来单独更改输出比较模式的函数

这四个函数,是用来单独更改CCR寄存器值的函数,这四个函数比较重要,在运行的时候,更改占空比,就需要用到这四个函数

总结一下:

这个OCInit函数,是用来结构体来初始化输出比较单元的

这些函数,是定时器的一些小功能,了解一下即可,不需要掌握

这四个函数重要,需要掌握,其他了解一下即可。

现在

打开时钟,选择内部时钟,初始化时基单元

然后初始化输出比较单元

这四个此时和函数,对应四个输出比较单元,你需要初始化哪个通道,就调用哪个函数,不同的通道对应的GPIO口也是不一样的,所以按自己的GPIO口需求来,这里用的PA0口,对应的就是第一个输出比较通道

这里选TIM_OC1Init(),第一个参数TIMx,第二个参数是配置输出比较的结构体

因为它的结构体成员比较多,所以需要配置很多,但是有些不需要配置,所以这里修改一下,要么就都配置,要么就先给结构体成员赋一个初始值,在修改部分的结构体成员

用这个函数体给结构体赋初始值,这是一个注意事项,如果你不想把每个结构体都赋给一个,那就用这个函数,赋一个初始值,再更改你想改的值就行

然后看结构体函数

第一个,OCMode,输出比较模式

这几个是输出比较模式

第一个Timing,是冻结模式

第二个,Active,相等时置有效电平

第三个Lnactive,相等时置无效电平

第四个Toggle,相等时电平翻转

最下面那两个就是PWM模式1和PWM模式2了

主要用的就是TIM_OCMode_PWM1

第二个,OCPolarity,输出比较极性

第一个是High,是有效电平是高电平,REF有效时,输出高电平

第二个是Low,是有效电平是低电平,REF有效时,输出低电平

这两个根据电路需求来,这里选择高极性

第三个,输出状态,就是输出使能

选ENable

第四个,用来设置CCR寄存器值的,它的参数可以是0到FFFF之间的一个值,16位的范围

我们现在已经把通道初始化好了

现在初始化GPIO

然后就配置完了

现在想让LED呈现呼吸灯的效果,那就是不断更改CCR的值就行了

用这个函数

这个函数是用来单独更改通道1的CCR值的

这样就OK了

现在在主函数

这样就完成了。

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值