初级会员
- 积分
- 64
- 金钱
- 64
- 注册时间
- 2018-5-4
- 在线时间
- 13 小时
|
楼主 |
发表于 2019-8-6 09:50:53
|
显示全部楼层
- void USART2_IRQHandler(void)
- {
- BaseType_t xHigherPriorityTaskWoken;
-
- if(USART_GetITStatus(USART2, USART_IT_TC) != RESET)
- {
-
- printf("发送完成中断2\r\n");
- USART2_TX_EN=0; //设置为接收模式
- UART2_RX_DMA_Enable(); //使能DMA,等待接收
- USART_ITConfig(USART2, USART_IT_IDLE, ENABLE); //开启空闲中断
- USART_ClearITPendingBit(USART2, USART_IT_TC); //清除中断标志
- }
- else if(USART_GetITStatus(USART2, USART_IT_IDLE) != RESET)
- {
- USART_ClearITPendingBit(USART2, USART_IT_IDLE); //清除中断标志
-
-
-
- xSemaphoreGiveFromISR(BinarySemaphore1,&xHigherPriorityTaskWoken);
- // if(Task4Task_Handler!=NULL)//接收到数据,并且接收任务通知的任务有效
- //
- // { vTaskNotifyGiveFromISR(Task4Task_Handler,&xHigherPriorityTaskWoken);//发送任务通知
- //
- //
- //
- // portYIELD_FROM_ISR(xHigherPriorityTaskWoken);//如果需要的话进行一次任务切换
- // printf("发送通知成功");
- //
- // }
- printf("串口2空闲中断\r\n");
- USART_ITConfig(USART2, USART_IT_IDLE, DISABLE); //关闭空闲中断
-
- }
- }
- /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
- void Frequency_Modebus_Recive_task(void *pvParameters)
- {
- unsigned short int FRE_RX_DATE;
- while(1)
- {
-
- xSemaphoreTake(BinarySemaphore1,portMAX_DELAY);
-
- // ulTaskNotifyTake(pdTRUE,portMAX_DELAY); //获取任务通知
-
-
- printf("调用成功4");
-
-
-
-
- /* 1.读取DMA */
- USART_ReceiveData(USART2); //读取数据
- FRE_RX_CNT = DMA_Rec_Len - DMA_GetCurrDataCounter(DMA1_Channel6); //接收个数等于接收缓冲区总大小减已经接收的个数
-
-
- /* 3.搬移数据进行其他处理 */
- memcpy(FRE_HANDLE_BUF, FRE_MDBS_RX_BUF, FRE_RX_CNT); //数组复制
- FRE_RX_DATE=Frequency_Modbus_Recive_Event(FRE_HANDLE_BUF,FRE_RX_CNT);//CRC校验,取出数据
- //// switch(Fre_flag)
- // {
- //
- //
- // case 2:Mid_Date.Speed=FRE_RX_DATE;break;
- // case 3:Mid_Date.Voltage=FRE_RX_DATE;break;
- // case 4:Mid_Date.Current=FRE_RX_DATE;break;
- // case 5:Mid_Date.Power=FRE_RX_DATE;break;
- // case 6:Mid_Date.Freq_Temper=FRE_RX_DATE;break;
- // case 7:Mid_Date.Torque=FRE_RX_DATE;break;
- //
- //
- //
- // default: break;
- // }
-
-
-
-
- vTaskDelay(10);
-
- }
- }
复制代码 |
|