资深版主
- 积分
- 4306
- 金钱
- 4306
- 注册时间
- 2018-6-30
- 在线时间
- 808 小时
|
本帖最后由 1208 于 2019-8-10 15:52 编辑
注意:仿真器要拔掉,不然会影响到复位脚
需要通过USB转TTL模块,RXD对应PA2(TX),TXD对应PA3(RX)
1)串口1通过中断函数,接收到数据
void USART1_IRQHandler(void)
{
Res = USART_ReceiveData(USART1);
}
2)串口2通过串口1中断接收的数据,并在串口2上发送
void USART2_IRQHandler(void) // 串口2中断服务函数
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)) //
{
res= USART_ReceiveData(USART1); // 接收到中断1的数据
USART_SendData(USART2,res); // 串口2 发送
}
}
3)为了显示在串口2的屏幕上
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf("\r\n您发送的消息为:\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART2, USART_RX_BUF[t]); //向串口2发送数据
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)!=SET); //等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}else
4)串口1发送串口接收,串口2接收发送到串口1
void USART2_IRQHandler(void) // 串口2中断服务函数
{
u8 res,r;
if(USART_GetITStatus(USART1,USART_IT_RXNE)) //
{
res= USART_ReceiveData(USART1); // 接收到中断1的数据
USART_SendData(USART2,res); // 串口2 发送
r= USART_ReceiveData(USART2); //接收数据
USART_SendData(USART1,r); // 串口1 发送
}
}
5)两个串口互发互收
void USART2_IRQHandler(void)
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART2); //读取接收到的数据
USART_SendData(USART1,Res);
}
void USART1_IRQHandler(void)
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res = USART_ReceiveData(USART1); //读取接收到的数据
USART_SendData(USART2,Res);
}
实验效果验证:
|
|