
问题背景: STM32H7,串口初始化时执行HAL_UART_MspDeInit函数,调用HAL_NVIC_DisableIRQ(huart->hdmarx->Init.Request)时引发hardfault。具体原因是因为变量huart(对应类型UART_HandleTypeDef)中未对hdmarx进行初始化,该指针变量指向0x00000000,但0x00000000有具体值(不清楚为何会有值,值从哪里来,断上电值不改变)。导致hdmarx->Init.Request的值变为0x6095.执行HAL_NVIC_DisableIRQ函数时入参异常,进入hardfault. 求助:关于stm32h7 ,0x00000000地址的内容是如何被改变的?观察过正常情况下的值,如下。前三个地址的值是0,但异常时,前三个地址的值是非0。 |
STM32H747 的USB 无法连接到电脑,电脑提示“未知USB设备,(设备描述符请求失败)”
研讨会送了一块NUCLEO-H7S3L8开发板,今天测试外部Flash有问题, 代码能下载进去,但加载不了代码
STM32H747 的BOOT1 是哪个管脚?datasheet 里面只有BOOT0。
STM32会存在单个IO口坏掉的情况吗?
STM32IDE如何设定代码到ITCM中运行。
STM32N6570-DK开发板,哪里还有卖的?
求一份STM32H723 SDMMC1 4线驱动SD卡的 CUBEMX例程或者教程
空项目有这个报错,跳线帽没有错,是官方的新板子,
STM32H750B-DK 板载STLINK 无程序
ART-PI H750-USB-MSC 设备描述符异常
各个外设调用之前都需要有初始化,保证地址正确
既然调用了相关的函数,并且用到了寻址,那么它也应该被先初始化。
否则就如同你看到的,地址的内容不对,导致访问出错。
上面的大佬也提到了,RAM不去初始化,它地址是随机的。如果这个随机值落在了合理总线范围内,不会出现hard fault(但是没起到预期作用)。
DMA的配置问题吧 先死机再跳到0x00000000
我认为你现在的重点 是保证代码本身没问题,如果对一个没明确初始化的局部变量或指针进行赋值或使用,到底会发生什么谁也不确定。
这种不确定,往往会带来各种奇怪问题,包括产生hardfault.
具体到STM32H7系列,地址00是ITCM所在区域的地址。
debug查看,在初始化之前,0x00000000地址的内容已经发生改变。
但这种用法,在ST的hal库中也是直接用,并未做初始化。且不是每次上电都会出现,概率性的出现这种情况,且出现值都是一样的。