高级会员

- 积分
- 640
- 金钱
- 640
- 注册时间
- 2018-8-9
- 在线时间
- 150 小时
|
发表于 2021-6-18 19:59:09
|
显示全部楼层
本帖最后由 maidilong 于 2021-6-18 20:04 编辑
今天又搞这了一天,用战舰V3(FLASH:512K RAM:128K)测试一样的代码没有问题,后来找一个资源小一的板子试试,STM32F103C8T6(FLASH:64K RAM:20K)也能正常,感觉F103系列的应该都没问题,再说M0系列的,原来用STM32F030F4P6(FLASH:16K RAM:4K)有问题,改国产的HK32F030F4P6(FLASH:16K RAM:10K)也有问题,再换STM32F051R8T6(FLASH:64K RAM:8K)也有问题,感觉F0系列的全有这个问题,我对比了源码M3和M0的默认堆和栈都是一样的Stack_Size 0x00000400 Heap_Size 0x00000200,我试着把M0的堆和栈都加大,Stack_Size 0x00000800 Heap_Size 0x00000400,结果M0的单片机还是有问题,所以应该跟堆栈没有关系,那到底是什么问题呢,百思不得其解,一样的代码,难道是M3与M0不一样的内核所致?知识有限还在找原因中。
使用过程中:
void OLED_Clear(void);//清屏void OLED_Full(void);//全屏显示
void OLED_DrawPoint(u8 x,u8 y,u8 t);//画点
void OLED_DrawLine(u8 x1,u8 y1,u8 x2,u8 y2,u8 mode);//画线
void OLED_DrawRectangle(u8 x1, u8 y1, u8 x2, u8 y2);//画框柜形
void OLED_DrawEllipse(u16 x0, u16 y0, u16 rx, u16 ry);//画椭圆
这些在M3和M0的芯片上使用都是正常的,就是那些参数有字符串函数在M0的会有问题
例如:OLED_ShowString(10,30,"love",12);
M0单片机每次调都字符串后面的那个参数12到*(u32*)(usmart_dev.parm+usmart_get_parmpos(n))=res;就会进入硬件中断
如果函数把字符串放最后那个参数就能正常,例如:OLED_ShowString(10,30,12,"love");

|
|