|
STM32CubeMX是个 ST 公司推出的一个配置工具,直接由图形界面配置STM32全系列单片机,基于HAL库生成初始化代码,用起来还是比较方便。
但是我在这几天的学习过程中遇到了一些问题,现列出来,避免新同学们再次入坑,如果以后还有坑,我还在这里记下来。
1、在学习TIM产生PWM脉冲时
遇到__HAL_TIM_SetCompare找不到的情况
需要在main.c前面加入#include "Legacy/stm32_hal_legacy.h"
2、在学习TIM捕获功能遇到的:
stm32f1xx_hal_tim.h库文件中有一个BUG:
库文件中原:
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP))):\
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P)) :\
((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P)))
应为:
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P)) :\
((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P)))
否则造成:
error: #53: expected a ":"
和
error: #65:expected a ";"
的错误信息半天找不到原因。
3、在学习IIC设备驱动中遇到的BUG
生成的i2c.c文件,必须将I2C时钟初始化 __HAL_RCC_I2C1_CLK_ENABLE(); 语句提前到初始化GPIO前面。
否则驱动失败,不报错,没有任何反应,查找问题让人抓狂。 |
|