stm32 标准库一些比较容易犯的错误

1,忘记给开模块时钟,特别是GPIO  AF 等功能,结果调试了半天,发现某个功能模块功能不正常,不过这个错误很好发现,在DEBUG模式下,查看一下对应模块的寄存器是否被赋值,如果左边情况多半是模块时钟没打开!

stm32 标准库一些比较容易犯的错误_第1张图片

RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_GPIOD , ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3 | RCC_APB1Periph_TIM3, ENABLE);


2,RCC_AHBPeriphClockCmd  用成 RCC_AHBPeriphResetCmd ,一般犯了这种错时程序员还以为自己开启了时钟模块,但是模块确不能正常工作,这种情况也可以在上面仿真调试的方法发现对应的模块寄存值没有被修改,从而定位问题。

// 并没有开启模块时钟

RCC_AHBPeriphResetCmd( RCC_AHBPeriph_GPIOC , ENABLE);


3,使用引脚复用功能时,没有配置引脚功能。常见为,缺少 GPIO_PinAFConfig 或GPIO_PinRemapConfig 指定,

如:

GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_6);

GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_6);

GPIO_PinAFConfig(GPIOC, GPIO_PinSource12, GPIO_AF_6);

5,在使用 GPIO_PinAFConfig() 接口时,将第二个参数 GPIO_PinSourcex  用成 GPIO_Pin_x 出现这种错误,需要很细心才能发现,往往需要单步调试定位。

6,使用的一些引脚,其默认功是是JTAG或晶振时钟引脚相关功能,在使用该引脚时,没有让对应的引脚进行功能重映射。


大家还有遇到什么常见的错误,可以在留言区打出来,看看你都都踩过什么坑!!

你可能感兴趣的:(嵌入式软件)