
有一個在STM32F446ZE上使用STemWin遇到的問題想請教 如下列程式,使用DRAW_SCENE()做display LCD update,用Timer做次數計數 unsigned char _strtmp[20]; unsigned int Timer = 0; void DRAW_SCENE() { sprintf(_strtmp,"%5d:", Timer); GUI_DispStringAt(_strtmp, 80, 155); Timer++; } 程式除了LCD外,有跑餵固定數值做輸入的演算法,而每次都會在Timer= 1127時,當程式跑到” GUI_DispStringAt(_strtmp, 80, 155);”時,產生Hard Fault進入HardFault_Handler,這時的register如下: CFSR = 0x00000100 - IBUSERR = 1 =>指令總線錯誤 存访问错误 - STKERR = 0 HFSR - FORCED = 1 而不跑演算法則不會Hard fault,stack usage %不高 可請教可能的原因為何?! |
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
STM32F407 的1588问题(已解决)
谁有STM32F4的固件库手册
在stm32f446xx.h中 "#define __FPU_PRESENT 1U /*!< FPU present */ ",IAR中FPU選擇 VFPv4 single precision。這樣FPU應該開啟了?!
而hardfault的發生就出在執行BL 0x81a933c卻跑到0x3a9dd118,因此產生IBUSERR = 1的hardfault exception
1) 試著將emWin配置的size(#define GUI_NUMBYTES (1024) * 110 //x KByte,static U32 extMem[GUI_NUMBYTES / 4];), 調大或小, 發現 20/40/80K hard fault的timer count一致,而110K count較小就發生hardfault
2) 僅使用一個100Hz I2C取sensor data的timer,在main loop中僅有emWin及演算法,按鍵。單獨測試emWin不會hardfault,單獨測試演算法也不會hardfault,但兩塊一起跑就hardfault!