Spirit
获得 420 次赞
帮助过262人
HAL库对外设加锁代码如下:#define __HAL_LOCK(__HANDLE__) \ do{ \ if((__HANDLE__)->Lock == HAL_LOCKED) \ { \ return HAL_BUSY; \ } \ else \ { \ (__HANDLE__)->Lock = HAL_LOCKED; \ } \ }while (0U)从if到赋值,至少是三条指令。假如在if判断后,出现中断,在这个中断里也会请求使用外设。低级别的请求加锁就失去意义了。感觉这里不太靠谱。----------------------------------我是指用HAL库裸编的情况,用操作系统的加锁就不用提了。
FATFS中的这个函数没看懂,麻烦讲解一下FRESULT f_forward (FIL* fp UINT(*func)(const BYTE*UINT) UINT btf UINT* bf); /* Forward data to the stream */
最近刚学习完FATFS发现FAT文件系统高度依赖0扇区诸如文件分配表位于前几个扇区对于Flash来说,频繁地增删文件,前几个扇区“磨损”肯定比其它位置要快的多。前几个扇区就决定了整个存贮器的寿命。对于嵌入式来讲,文件操作还不是很频繁对于计算机来讲,现在流行的固态硬盘其实也是Flash存贮器。那么FAT文件系统是否对固态硬盘来讲很不适合?为了延长固态硬盘寿命,目前有没有什么更好的方案?
FRESULT f_mkfs ( const TCHAR* path /* Logical drive number */ BYTE sfd /* Partitioning rule 0:FDISK 1:SFD */ UINT au /* Size of allocation unit in unit of byte or sector */)第三个参数,硬要我这个英语渣渣翻译的话:字节单元或扇区分配单元大小某例程是这样用的:f_mkfs("1:"14096);//格式化FLASH1盘符;1不需要引导区8个扇区为1个簇说第三个参数是8个扇区为1簇?!搞不懂了一般来讲,我们尽可能把硬件和应用区分开这搞得我格式化时还得知道我的硬件是怎么组成的?!