串口中断进入死循环 “HardFault_Handler”

2019-07-24 12:56发布

使用STM32F103C8T6单片机尝试实现IAP程序,使用USART1来发送APP。在发送APP的时候串口进入中断,执行完USART_RX_BUF[USART_RX_CNT]=res;这句后进入HardFault_Handler死循环。

中断服务程序如下,原子大哥的例程:
u8 USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X08003000)));
u16 USART_RX_CNT=0;
#define USART_REC_LEN  20*1024

void USART1_IRQHandler(void)
{
        u8 res;       

        if(USART_GetITStatus(USART1,USART_IT_RXNE))
        {         
                res=USART_ReceiveData(USART1);
                if(USART_RX_CNT<USART_REC_LEN)
                {
                        USART_RX_BUF[USART_RX_CNT]=res;
                        USART_RX_CNT++;                                                                                                      
                }
        }

}


HardFault_Handler死循:
void HardFault_Handler(void)
{

  while (1)
  {
  }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
午夜狼嚎
1楼-- · 2019-07-25 04:59
 精彩回答 2  元偷偷看……
msq001
2楼-- · 2019-07-25 10:29
午夜狼嚎 发表于 2018-7-4 10:29
啊?我知道两个地址有区别,所以我想存在flash,就改成0x08003000了

往flash里面存数据需要特殊的操作的  需要先flash_unlock 然后好多操作呢,有一个例程 实验32 FLASH模拟EEPROM实验  是专门讲往flash存数据的
午夜狼嚎
3楼-- · 2019-07-25 12:23
msq001 发表于 2018-7-4 10:38
往flash里面存数据需要特殊的操作的  需要先flash_unlock 然后好多操作呢,有一个例程 实验32 FLASH模拟E ...

我知道了。主要是对原子哥的程序没太看懂,你这么一说,我大概知道问题出在哪儿了。我再去看看程序吧,谢谢!
午夜狼嚎
4楼-- · 2019-07-25 14:34
原子哥的IAP例程里面有flash APP和SRAM APP两种。我想实现flash APP应该怎么设置和定义呢?

一周热门 更多>