RT1052在threadX环境运行时,DMA串口收数据异常
基本情况描述1.使用RT1052芯片,在KEIL AC6环境下,下载了官方的2.12版本的SDK库;
2.启用了串口收发的DMA功能,与USB HOST MSD功能;
3.创建线程列表如下(1.串口(优先级3),2.LVGL(优先级6)3.页面逻辑控制(优先级6)4.USB枚举(优先级3)...)所有线程均为autostart
4.页面控制逻辑线程中,大概程序框架为
void entry(void)
{
dis_open();//显示开机画面
shakeHand();//与下位机通讯;
load_first_page();//加载第一个显示页面
while(1)
{
function();//根据当前在页面序号,获取相关数据,并及时通知LVGL刷新显示
}
}
问题描述:
1.串口咋shakeHand()步骤中,收发均正常。但是在function()步骤中的通讯,接收到的数据是异常的,且收到的数据个数不对,如:正常包为 0x010x03 0x02 0x44 0x55 0x66 0x77,收到的包为0x01 0x03 0x02 0x01 0x00 ...
2.插着U盘上电,USB枚举线程正常挂载上U盘,程序在第一次运行至function()时,异常卡死,触发了MemManage_Handler()中断服务函数。
3.如果在load_first_page()之后,才启动USB枚举线程,程序不会卡死。
开DMA要注意Cache问题,注意个问题了吧 eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧
这个注意了,收发缓存都是放在nocache去、区 eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧
这个注意了,收发缓存都是放在nocache区 eric2013 发表于 2023-2-16 14:34
开DMA要注意Cache问题,注意个问题了吧
这个注意了,收发缓存都是放在nocache区
页:
[1]