完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用stm32H750进行sd卡的fatfs实验时遇到了一些bug
具体步骤 1.配置时钟电路 2.配置系统 到freertos,这里使用TIM1 3.SDMMC1 除了PC12的CLK线,其他全部使用拉。不上,报FR_NOT_READY 打开报告被改写,在开启freertos之后,优先级会自动成5 4.配置fatfs第一个地方也可以选择 中文的。我直接用完中文的阻止了。cubeide出RAM用完如果sd的格式不是fat32,换exfat的话一定要启用,这里有一些会挂载失败, 爆出FR_NOFILESYSTEM的错误 5.freertosstack 设置大 .clock 下面给SDMMC1,2的数字时钟配置成48,配合SDMMC1设置的SDMMC时钟分频因子设置成5。卡的写入频率为4/(5+2) 6M。 7.程序 给大一点的heap和stack注:用cubeide 可能产生挂不上的bug。 main函数基本不用改,只做freertos.c #include "FreeRTOS.h" #include "task.h" #include "main.h" #include "cmsis_os.h" /* Private includes ------- -------------------------------------------------- -*/ /* 用户代码开始包含 */ #include "FreeRTOS.h" #include "task.h" #include "main.h" #include "cmsis_os.h" #include "fatfs.h" #include "sdmmc .h" UINT br,bw; // 变换变量 char test_buf[1024] = {"0000rn"}; void StartDefaultTask(void const * argument) { /* USB_DEVICE 的初始化代码 */ MX_USB_DEVICE_Init(); retSD = f_mount(&SDFatFS,"",1); while(retSD) { retSD = f_mount(&SDFatFS,"",1); os延迟(10); } uint32_t 时间=0; uint32_t 时间2=0; 字符我; /* 无限循环 */ for(;;) { time = time2; test_buf[3] = 时间%10+'0'; 时间/= 10; test_buf[2] = 时间%10+'0'; 时间/= 10; test_buf[1] = 时间%10+'0'; 时间/= 10; test_buf[0] = 时间%10+'0'; retSD = f_open(&SDFile, "time.txt", FA_CREATE_ALWAYS | FA_WRITE | FA_READ); f_lseek(&SDFile,time2*5); retSD = f_write(&SDFile,&test_buf,strlen(test_buf),&bw) ; retSD = f_close(&SDFile); 时间2++; os延迟(100); } |
|
|
|
只有小组成员才能发言,加入小组>>
3262 浏览 9 评论
2942 浏览 16 评论
3442 浏览 1 评论
8949 浏览 16 评论
4035 浏览 18 评论
1078浏览 3评论
558浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
551浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2286浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1846浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 07:27 , Processed in 1.096793 second(s), Total 51, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号