定时器
PWM:
第一步:开启时钟,GPIO外设与TIM外设时钟打开
第二步:配置时基单元
第三步:配置输出比较单元
TIM_OCInit函数,用结构体来初始化输出比较单元
TIM_SetCompare函数,
如何初始化输出比较单元:
(一)TIM_OCInit函数对应输出比较单元(通道),
(二)配置输出比较的结构体
(三)结构体的成员有很多是高级定时器,(带N的为高级定时器)
OCmode——>设置输出比较的模式 TIM_OCMode_PWM1
OCPolarity——>设置输出比较的极性 有效电平为高电平 TIM_OCPolarity_High
OCOutputState——>设置输出比较的使能 TIM_OutputState_Enable
OCPulse——>设置CCR
为结构体赋初始值(OCStructInit函数)
问题:为什么一定要给没用到的结构体参数赋初始值呢
使用定时器控制引脚采用复用开漏/推挽输出模式
计算频率,分辨率与占空比:
1M=1000 000HZ
f=晶振频率/(PSC+1)/(ARR+1)------->1000------>晶振频率=72M,ARR+1=100,PSC+1=720
分辨率=1/(ARR+1)----->1%------>ARR+1=100
占空比=CCR/(ARR+1)------>50%------->CCR=50
引脚重映射:
重映射可以在引脚冲突时使用。
首先要开启AFIO的时钟(AFIO------>复用IO口)
GPIO_PinRemapConfig-------->引脚重映射配置函数
重映射其他端口时,如果该端口有属于自己的功能,则先关闭其对应端口
GPIO_PinRemapConfig()----->部分或全部重映射
GPIO_PinRemapConfig()----->第一个参数为关闭3个重映射本来具有功能的端口还是5个
注意事项:
每个通道与每个输出比较值一一对应。