移植完FATfs+FreeRTOS之后,发现挂载SD卡的时候代码总是卡在
原因:在使用FreeRTOS的时候,调用FATfs中的f_mount函数会进入临界段,在临界段中Systick定时器中断会被屏蔽,而Systick中断服务函数中会调用HAL_IncTick函数来使全局变量umTick自增,所以只要在临界段中调用HAL_Delay就会导致莫名奇妙的问题。
将HAL_Delay底层修改为自己定义的函数delay_xms
该函数底层直接去读SysTick寄存器的计数值,虽然中断被屏蔽了,但是计数器还是在工作!所以可以根据MCU主频,然后通过读计数值来完成延时操作。