流程:主函数 -> 系统时钟配置 -> 高级定时器初始化 -> mcu硬件初始化 -> GPIO引脚初始化
1.主函数
- a.所有外设初始化:HAL_Init()
- b.系统时钟配置
- c.高级定时器初始化
- d.启动定时器:HAL_TIM_BASE_Start()
- e.启动定时器通道和互补通道PWM输出:HAL_TIM_PWM_Start() 、 HAL_TIMEx_PWMN_Start()
- f.死循环:while(1){}
2.系统时钟配置
- a.RCC振荡器初始化:HAL_RCC_OsConfig()
- b.RCC时钟初始化:HAL_RCC_ClockConfig()
- c.系统滴答定时器初始化:HAL_SYSTICK_Config()
3.高级定时器初始化
- a.基本环境初始化:HAL_TIM_Base_Init()
- b.时钟源配置:HAL_TIM_ConfigClockSource()
- c.比较输出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()
- d.主输出模式同步:HAL_TIMEx_MasterConfigSynchronization()
- e.刹车和死区时间配置:HAL_TIMEx_ConfigBreakDeadTime()
- f.通道比较输出配置:HAL_TIM_PWM_ConfigChannel()
- 定时器实际时钟频率为:72MHz/(定时器预分频+1)=36MHz
- PWM频率为:定时器实际时钟频率/(定时器周期+1),[定时器周期为900的话,36MHz/(900+1)=40Khz]
- 实际PWM频率为:PWM频率/(高级定时器重复计数寄存器值+1),[高级定时器重复计数寄存器值为0的话,40KHz/0+1=40KHz]
- PWM占空比为:定时器通道比较输出脉冲/定时器周期*100%,占空比为50%时电机不转。[定时器通道比较输出脉冲为450,定时器周期为900的话,则占空比为50%,电机不转]
- g.GPIO引脚初始化
4.mcu硬件初始化:HAL_TIM_Base_MspInit()、HAL_TIM_Base_MspDeInit()
5.GPIO引脚初始化
- a.GPIO端口时钟使能:__HAL_RCC_GPIOA_CLK_ENABLE()
- b.设置IO引脚:Pin
- c.设置工作模式:Mode
- d.设置速度:Speed
- e.完成初始化:HAL_GPIO_Init()
备注:
设置定时器捕获比较寄存器(定时器通道比较输出脉冲)的值:__HAL_TIM_SET_COMPARE(handle、channel、compare)
设置延时:HAL_Delay(1000)
HAl库控制L298N直流电机旋转笔记
原文:https://www.cnblogs.com/kerwincui/p/12032362.html