21ic问答首页 - GD32303CEVAL的SD卡驱动无法再Freertos中正常使用
GD32303CEVAL的SD卡驱动无法再Freertos中正常使用
wimimi2024-05-13
在粿机中使用sd_block_read/sd_block_write读写正常
下图是进入rtos前的粿机程序
进入rtos后读写时产生错误,产生两种错误1是SD_CMD_RESP_TIMEOUT,这个错误在写的时候产生,二是SD_COM_CRC_ERROR,这个错误在读的时候产生,rtos中也不是完全无法读写,有小概率可以正常读写
在手册中我找到下面内容
在手册中我找到下面内容
这是程序检测错误时的依据,是sd卡响应相关的寄存器r1。检测到使用CMD16时产生命令响应超时错误
赞0
评论
2024-05-15
赞0
int main()
{
char str[50] = "";
sd_error_enum sd_error;
nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);
nvic_irq_enable(SDIO_IRQn, 0, 0);
gpio_config();
uart_config();
tim7_init();
gd_eval_lcd_init();
sd_config();
sd_error=sd_block_write(buff_write, 100*512, 512);
printf("W:%d\t",(int)sd_error);
sd_error=sd_block_read(buff_read, 100*512, 512);
printf("R:%d\t",(int)sd_error);
FreeRtos_Init();
while (1)
{
}
}
void StartDefault_task(void *pvParameters)
{
lcd_line_info info = {0};
sd_error_enum sd_error;
uint32_t index = 0;
int time = 0;
KeyInit();
//xTimerStart(hkeyTimer,0);
for (;;)
{
portENTER_CRITICAL();
sd_error=sd_block_write(buff_write, 100*512, 512);
printf("rtosW:%d\t",(int)sd_error);
sd_error=sd_block_read(buff_read, 100*512, 512);
printf("rtosR:%d\t",(int)sd_error);
portEXIT_CRITICAL();
vTaskDelay(500);
}
}
评论
2024-05-13
您需要登录后才可以回复 登录 | 注册