STM32F103串口通讯注意事项。

github:https://github.com/oraSC

 

(1)通过串口不断发送数据

库函数中的

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

函数不具备缓存作用,当我们需要连续不断发送一段数据时,我们需要等待前一次数据发送完成,放置数据丢失错误

void usart2_send_char(u8 _char)
{
	/* 等待上一次发送完成*/
	while( !(USART2->SR & (1 << USART2_SR_TC) )) ;
	USART2->DR = _char ;
}

(2)通过中断接受数据

          通过中断中断接受数据时我们可以通过读取数据寄存器中的值使硬件自动清除挂起的接收中断标志位,为了防止其他外设功能的错误,我们应该对每一个中断都养成手动清除中断标志位的习惯。

void USART2_IRQHandler(void)
	{     
		u8 rec ;

    if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) 
		{
			rec  = USART_ReceiveData(USART2) ;
			usart2_send_char(rec) ;
			USART_ClearITPendingBit(USART2 , USART_IT_RXNE);
		}
               
}

同时,使用串口调试助手时应该注意发送区的\r\n(即换行),因为这个是不可见但是是有效的发送数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值