新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2018-9-20
- 在线时间
- 9 小时
|
9金钱
向大佬们求助!!在FreeRTOS系统上添加了三个任务,解析报文任务、打印函数任务、指示灯检测任务,每当串口来了个IDLE中断,其他任务都会先执行一次,但然后就卡住了。这是为啥呀?
//串口中断函数
void USART1_IRQHandler(void)
{
uint32_t temp=0;
if(__HAL_USART_GET_FLAG(&UART1_Handler, USART_FLAG_IDLE)!=RESET)
{
__HAL_UART_CLEAR_IDLEFLAG(&UART1_Handler);
HAL_UART_DMAStop(&UART1_Handler);
temp = UART1_Handler.hdmarx->Instance->NDTR;
rx_len= USART_REC_LEN-temp;
HAL_UART_Receive_DMA(&UART1_Handler,USART_RX_BUF,USART_REC_LEN);
Comp_Flag=1;
vTaskResume(Fetch_Da_task);
}
//解析报文任务
void Fetch_Da_task(void *pvParameters)
{
const u8* qt = USART_RX_BUF;
while(1)
{
if(Comp_Flag)
{
Buffer=My_ctoi(qt, Buffer); //解析报文
Tak_Data(); //提取报文
Comp_Flag=0;
}
else vTaskSuspend(Fetch_Da_task);
vTaskDelay(500);
}
}
|
|