软件为keil5,头文件未找到
通过FATFS文件系统读写SD卡创建文件可以了,但加入MSC,一直显示一个没有格式化的U盘盘符,也不能格式化,这是什么问题导致的
stm32f103汇编求助
cubemx 生成的freertos代码 在keil ac6下不能编译,有什么解决的方法吗
报错Could not determine GDB version using command: arm-none-eabi-gdb --version
stm32f107vct6配RTL8201例程
STM32F103VGT6 能代替 STM32F103VFT6 吗?
STM32 读取DHT20,跑的官方的例程一直读取失败,初学者,各位大佬能指点一下不
向各位大佬请教一个问题
STM32CubeMX 使用"FW_F1 V1.8.6"生成FreeRTOS代码缺少"freertos_mpool.h"?
如果是USB不在中断里处理,那就好办多了,随便搞个标志位就好了。
用SPI接SD卡,用USB接PC,不就能独立了么?
USB Device只是一个外设,CPU访问它,也访问SDIO外设。
fatfs是一套软件程序库,CPU执行其中的功能,间接对SDIO外设进行访问。
你想的功能,是软件上如何规划的问题。两个部分都想用SDIO,那么得有互斥的机制。可以考虑作为RTOS的两个任务来处理。
{
OS_ERR err;
CPU_SR_ALLOC();
u8 offline_cnt=0;
u8 USB_STA=0;
u8 Divece_STA=0;
u8 i=0,err_back=0;
u16 werr=0,rerr=0;
(void)p_arg;
USB_GPIO_init();
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
while(1)
{
if(bDeviceState==CONFIGURED)
{
OSMutexPend (&TEST_MUTEX,0,OS_OPT_PEND_BLOCKING,0,&err); //请求互斥量
bsp_DelayMS(5);
if(USB_STATUS_REG&0x03)//USB读写
{
err_back=0x80;
}else break;//USB空闲退出
if(USB_STA!=USB_STATUS_REG)//状态改变
{
if(USB_STATUS_REG&0x01) //正在写
{
USB_STATUS_REG&=0xFD;//清除读标志
}
if(USB_STATUS_REG&0x02)//正在读
{
USB_STATUS_REG&=0xFE;//清除写标志
}
if(USB_STATUS_REG&0x04)
{
werr++;
}
if(USB_STATUS_REG&0x08)
{
rerr++;
}
USB_STA=USB_STATUS_REG;//记录最后标志
}
if(Divece_STA!=bDeviceState)
{
Divece_STA=bDeviceState;
}
i++;
if(i==200)//200ms
{
i=0;
if(USB_STATUS_REG&0x10)
{
offline_cnt=0;//USB连接,清除offline_cnt
bDeviceState=CONFIGURED;
}else//ûÓеõ½ÂÖѯ
{
offline_cnt++;
if(offline_cnt>10)bDeviceState=UNCONNECTED;//2s没有在线标志标志USB拔出
}
if(err_back&0x80)
{
err_back++;
if((err_back&0x07)==0x07)
{
err_back=0;
}
}
USB_STATUS_REG=0;
}
OSMutexPost(&TEST_MUTEX,OS_OPT_POST_NONE,&err);
}
LED2_TOGGLE;
OSTimeDlyHMSM(0, 0, 0, 5, OS_OPT_TIME_HMSM_STRICT,&err);
}
}
USB程序将SD卡用作MSC,
然后,还有一个程序要1S钟写一次SD卡数据。
需要修改USB例程。
有两种思路:
1. 定时写SD卡也用USB例程操作SD卡的接口。
2. 在SD卡驱动中添加互斥,并且要梳理两者逻辑。
个人觉得有点复杂,因为USB通信对时序要求挺高的。
我也在搞这个,能否指点一下