前言
声明一下:
这是我观看了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了
现在在主函数
这样就完成了。