1.中断模式
void USART2_IRQHandler(void)
//串口2中断服务程序
{
u8 u8Temp;
/*****************发送中断************************************/
if (USART_GetITStatus(USART2, USART_IT_TXE) == SET)
{
if(TX2_cn == TX2_no)
{
DIS_485TX();
USART_ITConfig(USART2, USART_IT_TXE, DISABLE);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
u8Uart2_FSM = U_FSM_ADR;
}
else
{
u8Temp = TX2_buff[TX2_cn++];
USART2->DR = (u16)u8Temp;
// GPIOD->ODR &= ~(GPIO_Pin_4);
}
}
2.轮询模式
for(TX1_cn = 0;TX1_cn <= TX1_no;TX1_cn++) //查询发送
{
while((USART1->SR&0x40)==0);
USART1->DR = (u16)UFlashBuff[TX1_cn];
}
本文详细介绍了串口通信中两种常用的数据传输方式:中断模式与轮询模式。中断模式通过设置中断服务程序实现数据的发送与接收,而轮询模式则通过循环查询的方式完成数据传输。
1万+

被折叠的 条评论
为什么被折叠?



