为什么inpw();会跑飞单片机呢

lijinqiao2010 |浏览1297次
收藏|2016/02/17 14:59

 #define inpw(port)          ((*((volatile unsigned int *)(port))))
uint8_t  uart_rcvbuf[MAX_PKT_SIZE] = {0};
uint32_t lcmd ;
lcmd = inpw(uart_rcvbuf);
为什么我的串口中断里,只要跑到这句lcmd = inpw(uart_rcvbuf);,单片机马上进入到HardFault_Handler中断去 


满意回答

2022/09/06 15:15

1、ARM访问内存都需要地址对其的,例如你是访问word,地址需要4对其

2、可能你的变量uart_rcvbuf是局部变量,而stack定义太小,在startup_xxx.s里面放大stack定义,或者将uart_rcvbuf定义为全局变量

shirley

其他回答(0)
1人关注该问题
+1
 加载中...