完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚上手ucosII 写了一个ucosII程序,程序进入了hard fault Hanlder死掉了,调试和排查后找到表象是一个全局数组导致系统进入异常,因为我注释掉这一句之后系统就正常运行,但是我调试的时候,程序执行顺利走过这一句代码,到整个调用函数完毕才死掉,很奇怪。而且我也检查了数组指针并没有溢出。求大神帮忙分析。
异常代码处:buf = high_byte<<16 | mid_byte<<8 | low_byte;(Read_A_Conversion()函数中) 整个系统大概框架是: 任务: void Task_Cs5524Run(void *p_arg) { // OS_CPU_SR cpu_sr; while(1) { // OS_ENTER_CRItiCAL(); Read_CS5524(); // OS_EXIT_CRITICAL(); if(D_value[0]!=0){ LedRun_Inversion(); } else LedErr_Inversion(); OSTimeDlyHMSM(0,0,0,100); } } Read_CS5524函数部分: void Read_CS5524(void) { Read_A_Conversion(0x88,4,c***uf);//8setup // Delay_Ms(2); AI_Process(); AI_Filter(); Whatwrong(); } Read_AConversion函数: void Read_A_Conversion(char command, char channel, unsigned int *buf) { unsigned char i = 0; static unsigned char high_byte = 0, mid_byte = 0, low_byte = 0; /*start conversion*/ SPI1_CS_LOW; SPI_ReadWriteByte(command);//0xB8-µ¥ÖÜÆÚ8setup do{ }while(GPIO_ReadInputDataBit(GPIOX_SPI1, GPIO_SPI1_MISO) != 0);//µÈ´ýת»»½áÊø SPI_ReadWriteByte(0xff); for(i=0; i high_byte = SPI_ReadWriteByte(0x00); mid_byte = SPI_ReadWriteByte(0x00); low_byte = SPI_ReadWriteByte(0x00); // Recbuf= high_byte<<16 | mid_byte<<8 | low_byte; buf = high_byte<<16 | mid_byte<<8 | low_byte; } SPI1_CS_HIGH; } 最后是buf指针所指向的是一个全局的unsigned int 数组: unsigned int c***uf[20]={0}; 当我用Recbuf替换掉buf时系统正常运行。Recbuf也是一个全局得得unsigned int 数组: unsigned int Recbuf[8]; 有没有ucos大神出来帮忙分析分析啊! |
|
相关推荐
1个回答
|
|
争取能结贴啊!大神们快来!
|
|
|
|
只有小组成员才能发言,加入小组>>
684 浏览 0 评论
1100 浏览 1 评论
2465 浏览 5 评论
2799 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2638 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
648浏览 9评论
642浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
775浏览 6评论
619浏览 5评论
661浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 09:39 , Processed in 0.997164 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号