HAL庫直流電機編碼測速(L298N驅動)筆記


主函數開始后的處理流程:


1.外設初始化:HAL_Init()


2.系統時鍾配置

  • RCC振盪器初始化:HAL_RCC_OsConfig()
  • RCC時鍾初始化:HAL_RCC_ClockConfig()
  • 系統滴答定時器初始化:HAL_SYSTICK_Config()


3.按鍵GPIO初始化

  • GPIO端口時鍾使能:__HAL_RCC_GPIOA_CLK_ENABLE()
  • 工作模式
  • 激活下拉或上拉
  • 引腳初始化:HAL_GPIO_Init()

 

4.串口初始化

  • 串口GPIO端口使能:__HAL_RCC_GPIOA_CLK_ENABLE()
  • 串口初始化(包含串口硬件初始化):HAL_UART_Init()

 

5.編碼器定時器初始化

  • 定時器時鍾使能:__HAL_RCC_TIM3_CLK_ENABLE()
  • 編碼器GPIO引腳初始化
    • GPIO端口時鍾使能:__HAL_RCC_GPIOB_CLK_ENABLE()
    • 工作模式
    • 激活下拉或上拉
    • 引腳初始化:HAL_GPIO_Init()
  • 編碼器中斷優先級配置
    • 設置中斷優先級:HAL_NVIC_SetPriority()
    • 使能中斷請求:HAL_NVIC_EnableIRQ()
  • 定時器基本環境初始化:HAL_TIM_Base_Init()
  • 定時器時鍾源配置:HAL_TIM_ConfigClockSource()
  • 定時器輸入捕獲環境初始化:HAL_TIM_IC_Init()
  • 定時器主輸出模式同步:HAL_TIMEx_MasterConfigSynchronization()
  • 定時器輸入捕獲配置:HAL_TIM_IC_ConfigChannel()

 

6.編碼器定時器啟動:HAL_TIM_Base_Start()

 

7.L298N定時器初始化

  • 基本環境初始化:HAL_TIM_Base_Init()
  • 時鍾源配置:HAL_TIM_ConfigClockSource()
  • 比較輸出初始化(包含mcu硬件初始化):HAL_TIM_PWM_Init()
    • 初始化:HAL_TIM_Base_MspInit()
    • 反初始化:HAL_TIM_Base_MspDeInit()
  • 主輸出模式同步:HAL_TIMEx_MasterConfigSynchronization()
  • 剎車和死區時間配置:HAL_TIMEx_ConfigBreakDeadTime()
  • 通道比較輸出配置: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%,電機不轉]
  • GPIO引腳初始化
    • a.GPIO端口時鍾使能:__HAL_RCC_GPIOA_CLK_ENABLE()
    • b.設置IO引腳:Pin
    • c.設置工作模式:Mode
    • d.設置速度:Speed
    • e.完成初始化:HAL_GPIO_Init()

 

8.編碼器定時器中斷捕獲啟動:HAL_TIM_IC_Start_IT()

 

9.L298N定時器通道和互補通道PWM輸出(可控制電機正反轉)

  • HAL_TIM_PWM_Start() 、
  • HAL_TIMEx_PWMN_Start()

 

10.循環:while(1){}

 

備注:

系統滴答定時器中斷回調函數(每發生一次滴答定時器中斷進入該回調函數一次):HAL_SYSTICK_Callback()

定時器輸入捕獲中斷回調函數:HAL_TIM_IC_CaptureCallback()

重定向C庫函數printf:int fputc(int ch, FILE *f){}

重定向C庫函數getchar、scanf:int fgetc(FILE * f){}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM