void USART1_IRQHandler(void)
{
#if SYSTEM_SUPPORT_OS //使用OS
OSIntEnter();
#endif
if((__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE)!=RESET))
{
USART2_RxDispose();
if (__HAL_UART_GET_IT_SOURCE(&huart2,UART_IT_RXNE)!=RESET)//接收中断
USART2_RxDispose();
HAL_NVIC_ClearPendingIRQ(USART2_IRQn);//清除接收中断标志位
if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_ORE) != RESET)//状态标志位
{
__HAL_UART_CLEAR_FLAG(&huart2, UART_FLAG_ORE); //清除状态标志位
(void)HAL_UART_Receive_IT(&huart2,RxBuffer,1);
}
}
HAL_UART_IRQHandler(&huart2);
#if SYSTEM_SUPPORT_OS //使用OS
OSIntExit();
#endif
}
uint8_t Uart2_PutChar(uint8_t ch)
{
/* Write a character to the USART */
HAL_UART_Transmit(&huart2,(uint8_t *)&ch,100,0x1fff);//向串口2发送U8里面的数据
while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)!=SET); //等待发送结束
return ch;
}
/*******************************************************************
功能: 写串口2函数
描述: 往串口2发送数据,用到以下全局变量:
参数: sentchar-发送数据缓冲区
length-发送数据长度
返回值:无
*******************************************************************/
void WriteComm2(uint8_t *buffer,uint32_t count)
{
uint32_t iCnt;
for(iCnt=0;iCnt<count;iCnt++)
{
Uart2_PutChar(buffer[iCnt]);
}
}
void USART2_RxDispose(void)
{
unsigned char ucRece;
ucRece = HAL_UART_Receive_IT(&huart2,RxBuffer,1);//Read received data
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>