开贴记录STM32工程遇到的各种问题及解决方法
STM32工程问题集锦
针对工程开发过程中常见问题进行备注
文章目录
问题列表
初始化要点
1.将程序编译下载到MCU后无法进行调试。
时钟设置
- 串口输出乱码,检查后串口配置正确,将接收端波特率修改为单片机初始化时波特率的一半,接受正常。
串口设置
- 串口输出乱码,检查后串口配置正确,将接收端波特率修改为单片机初始化时波特率的一半,接受正常。
- 如何在STM32CUBEIDE上在Eclipse上集成串口终端显示。
- 串口中文乱码,英文正常。
- STM32CUBEMX中串口数据位的选择
STM32CUBEIDE
- 如何安装插件。
- STM32CUBEMX更新代码后出现中文乱码,及串口中文乱码的解决办法。
- 默认初始化程序顺序与工程不符,每次生成后需要手动调整,如何在软件设置里修改初始化程序顺序。
- 在使用STM32CUBEIDE看代码的大纲Outline的时候,有的文件显示:Outline is disabled due to scalability mode(option),未能正常显示大纲。
ADC
- ADC采用DMA方式多通道不能循环工作只采样一次,需要重新运行HAL_ADC_Start_DMA(&hadc1, &ADC_Value, 3)才能再次采集,并且只有第一个通道有数值,数值还不是正确的转换值。
DMA
- 采用DMA方式控制外设输出时,确定外设的配置和相关程序没有问题,但是没有正常输出。
定时器
- 定时器中断是怎样一个处理过程,应该把中断后要处理的程序放在哪个地方?
串口通信
- 直接采用单片机的串口TTL电平通信正常,增加MAX485芯片后,通信不稳定,误码率高。
HardFault
- 调试时,程序时不时进入void HardFault_Handler(void),有时存在偶然性,有时一直进入?
工程生成
- STM32 CUBEMX 报错 generation have a problem 的解决办法
工程调试
- Keil MDK开发时,把watch中数组内容保存到文件中的方法
处理方法
初始化要点
- 将程序编译下载到MCU后无法进行调试。
由于问题是在使用STM32CUBE配置时发现,解决办法如下:检查System Core->SYS设置,是否启用Serial Wire模式,如果没有需要启用。如果此时开发软件(STM32CUBEIDE)无法和MCU通信,可以使用STM32CubeProgrammer连接芯片,将FLASH清空,清空后开发软件就能连接上MCU。
时钟设置
- 串口输出乱码,检查后串口配置正确,将接收端波特率修改为单片机初始化时波特率的一半,接受正常。
检查时钟设置,HSE的时钟值是否与板上相符,经检查发现板上为8MHz,设置为16MHz,导致出现串口乱码问题。