STM32开发常见问题解决方法汇总(不断更新)

STM32开发常见问题解决方法汇总

    • *配置问题
  • 1. 使用STLINKV2,在keil中首次使用下载程序时没有异常,但后边再下载时会出现
  • 2.STlink下载后不自动运行,需要复位后才能运行
  • 3.STM常用的固件烧录方式
  • 4.运行或调试时出现提示 break at address “0x1ffff020” with no debug information available,or outside of program code.
  • 5.生成独立的初始化c文件
  • —————————————————————————-
    • *编程中的常见问题
  • 1.外部中断(EXTI)
  • 2.使用HAL库编程,在main函数中必须首先调用HAL_Init函数,初始化HAL库
  • 3.对各个底层硬件的初始化,通常调用HAL_xxx_Init
  • 5.使用硬件IIC无输出
  • 6.PWM1模式下,只有CCR>ARR才能输出占空比100%
  • 7.芯片内部晶振虽好用,但是精度还是和外部晶振有差距的

*配置问题

1. 使用STLINKV2,在keil中首次使用下载程序时没有异常,但后边再下载时会出现

如果仍然有问题 ,一般情况下是因为我们用STLINKV2直接给板子供电,但山寨调试器通常性能不稳定,会导致STM32芯片因供电不足而写保护。你可以通过以下方法判断:
*STLINK连接板子,按住“复位”键的时候,MDK魔术手里点击setting,STLINK识别了芯片。
*STLINK连接板子,BOOT0上拉,MDK魔术手里点击setting,STLINK识别了芯片。
如果以上两种情况都出现了,那就说明确实是芯片写保护了。

怎么解决呢先,下载STM32 ST-LINK Utility,打开软件,点击connect to the target后立即按住复位键,2s后松开复位键,让STLINK识别芯片;

  • 当然,还有一种比较不正常的情况,就是一切配置都是正确的,STM32 ST-LINK
    Utility也能链接和擦写,但下载几次后莫名的就 错下载不了了,我的经验是重启电脑。解决!

2.STlink下载后不自动运行,需要复位后才能运行

一般大家都会在软件配置中选择Reset and Run

3.STM常用的固件烧录方式

常用的烧录方式有ICP、IAP、ISP三种方式。

4.运行或调试时出现提示 break at address “0x1ffff020” with no debug information available,or outside of program code.

或者是No source available for “_end() at 0x200001e0” 等问题

—————————————————————————-

*编程中的常见问题

1.外部中断(EXTI)

先来说明一下中断和事件的理解:
事件分为可见和不可见,可见就是我们可以通过寄存器查询到其状态值,不可见就是没有查询的接口,我们无法获知。绝大多数的事件都是不可见的,但多数与中断相关联,我们可以通过中断来使用相应的事件。事件可以触发中断,也可以触发其他事件。EXTI可以捕获外部出入线电平变化等事件,还可以生成EXTI中断等中断请求。
中断会产生中断请求,并执行对应的中断处理程序.
而事件则是向其它模块发送触发信 ,对于其它模块如何处理这个信 ,则由模块自己来决定.

STM32开发常见问题解决方法汇总(不断更新)
上图是STM芯片的外部中断事件线,可以看出,A-G端口的相同位,也就是相同编 的引脚,共用外部中断事件线,所以在引脚配置时,不能将不同端口的相同编 的引脚同时配置为外部中断。

2.使用HAL库编程,在main函数中必须首先调用HAL_Init函数,初始化HAL库

主要内容包括FLASH预读取、配置中断优先级、配置systick产生1ms时基、调用HAL_MspInit()初始化底层硬件。
HAL_MspInit()在”stm32f1xx_hal_msp.c”中进行定义。

3.对各个底层硬件的初始化,通常调用HAL_xxx_Init

该函数再回调HAL_xxx_MspInit函数实现具体初始化内容。

5.使用硬件IIC无输出

上说是硬件bug,经过以下操作忽然可以用来,记录一下,但没有复现bug。

  1. 将HAL_I2C_MspInit函数中的__HAL_RCC_I2C1_CLK_ENABLE()提前到__HAL_RCC_GPIOB_CLK_ENABLE()前面。
  2. 提高系统时钟频率。后来尝试降回内部时钟的8MHz,bug没有复现,所以可能还会出问题,再研究。

6.PWM1模式下,只有CCR>ARR才能输出占空比100%

7.芯片内部晶振虽好用,但是精度还是和外部晶振有差距的

在秒表点灯试验中就可以明现感受到不准,所以用户时间测量、频率测量时还是要加外部晶振。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年6月1日
下一篇 2022年6月1日

相关推荐