完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在STM32f103zet6中已经成功移植过了uC/OS-II 3.03 和uCGUI,在加入SDIO中断后系统不能运行,指示三个任务的流水灯最后只亮了一个,SDIO中断按如下写的:[C] 纯文本查看 复制代码
void SDIO_IRQHandler(void){// OSIntEnter(); // /* Process All SDIO Interrupt Sources */// SD_ProcessIRQSrc();//处理所有SDIO相关中断// printf("SD卡中断有效");// OSIntExit(); CPU_SR_ALLOC(); OS_CRItiCAL_ENTER(); //保存全局中断标志,关总中断/* Tell uC/OS-II that we are starting an ISR*/ OSIntNestingCtr++; OS_CRITICAL_EXIT(); //恢复全局中断标志 SD_ProcessIRQSrc();//处理所有SDIO相关中断 OSIntExit(); //在os_core.c文件里定义,如果有更高优先级的任务就绪了,则执行一次任务切换}请问这是什么原因呢?用SDIO方式读写SD卡只能使用中断方式么? |
|
相关推荐
6个回答
|
|
|
|
|
|
堆栈不够吧。
|
|
|
|
打开中断之前运行SDIO中断处理服务函数,完毕之后再打开中断开关看下
|
|
|
|
堆栈改大了也是卡死哦,不过后来我调试了下,发现程序是卡在打开路径函数那里了,单独的读一个文件运行正常,是我的文件系统没设置好么请问
[C] 纯文本查看 复制代码 void OutPutFile(void){ unsigned int a; FRESULT res; FILINFO finfo; DIR dirs;// int i;// char *fn; char path[50]={""}; printf("n file system(Tini-FatFa0.09a) starting! n"); //f_mount(0, &fsk); //main中已经定义过了 res = f_open(&fsrc,"hanhan.txt", FA_READ);if(!res){ br=1;a=0;for (;;) {for(a=0; a<512; a++) buffer[a]=0; res = f_read(&fsrc, buffer, sizeof(buffer), &br);printf("%sn",buffer); if (res || br == 0) break; // error or eof }}f_close(&fsrc); //if (f_opendir(&dirs, path) == FR_OK) //在操作系统中却不能执行,卡死在这// {// while (f_readdir(&dirs, &finfo) == FR_OK) // {// if (finfo.fattrib & AM_ARC) // {// if(!finfo.fname[0])// break; // printf("rn file name is:n %sn",finfo.fname); // } //}// }}void MainTask(void) {OS_ERR err;u32 total,free; GUI_Init();//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(9600); //串口初始化为9600//SD_Init(); FSMC_SRAM_Init();//初始化外部SRAMmem_init(SRAMIN);//初始化内部内存池mem_init(SRAMEX);//初始化外部内存池exfuns_init();//为fatfs相关变量申请内存//SD_InitializeCards();//检测SD卡disk_initialize(0); f_mount(0,fs[0]); //挂载SD卡 //f_mount(1,fs[1]); //挂载FLASH.//GUI_SetColor(GUI_RED);//GUI_Clear();if(exf_getfree("0",&total,&free))//得到SD卡的总容量和剩余容量{GUI_DispStringAt("FAT Error",12,90);printf("FAT Errorrn");}GUI_DispDecAt(total>>10,10,10,6);GUI_DispDecAt(free>>10,10,30,6);show_sdcard_info();//打印SD卡相关信息OutPutFile();while(1){OSTimeDly( (OS_TICK )200, (OS_OPT )OS_OPT_TIME_DLY, (OS_ERR *)&err);}//while(1);} |
|
|
|
中断运行正常哦,就是不能打开路径呢
|
|
|
|
恩恩,真的是这里的问题,问题已经解决了,谢谢原子哥。。。
|
|
|
|
只有小组成员才能发言,加入小组>>
791 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2710 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1070浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 12:24 , Processed in 1.153030 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号