OpenEdv-开源电子网
标题:
freertos当中如何处理USB与FATFS
[打印本页]
作者:
g758993137
时间:
2020-3-20 19:19
标题:
freertos当中如何处理USB与FATFS
请教一下,在freertos中,我用NANDFLASH做U盘,同时又要有FATFS对它进行数据的读写,我看了代码并搜了一下资料,由于USB的中断和FATFS调用的读写函数是一样的,需要做一个互斥处理,但是freertos的互斥信号量只能用于任务当中,请教一下该如何去做这个互斥访问
作者:
霸王猫
时间:
2020-3-21 19:31
本帖最后由 霸王猫 于 2020-3-23 09:05 编辑
把这个函数编写成支持可重入的函数
1、该函数中只能是局部变量,不能有全局变量
2、入口参数用形参数
3、要么编写成该函数有返回值
4、要么编写成无返回值时,在形参中用指针形参返回
---------------------------------------------------------------
因此如果需要使用全局变量,就可以这样:
获取互斥信号量
全局变量暂存到局部变量
释放互斥信号量
调用刚刚编写好的
可重入
函数(该函数的形参为刚刚暂存的局部变量)
作者:
霸王猫
时间:
2020-3-21 19:34
本帖最后由 霸王猫 于 2020-3-23 09:05 编辑
另外:如果全局变量在中断中写,在任务中读,则就不能使用互斥信号量,只能使用关中断的方式保护。
----可以这样编写【任务】中的代码
关中断
全局变量暂存到局部变量
开中断
调用刚刚编写好的
可重入
函数(该函数的形参为刚刚暂存的局部变量)
作者:
八度空间
时间:
2020-3-22 12:00
可以使用队列来做啊,要写入的数据放到队列里边,在fatfs任务中就读取,然后往fatfs里边丢就是了
作者:
justchen
时间:
2020-4-17 10:43
mark mark
欢迎光临 OpenEdv-开源电子网 (http://openedv.com/)
Powered by Discuz! X3.4