打印
[应用相关]

关于STM32串口USART的操作

[复制链接]
525|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2022-6-21 11:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这里以stm32c8t6为例,USART1_TX GPIOA.9(发送端) USART1_RX GPIOA.10(接收端)

首先, uart_init(9600); //串口初始化

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

接着,

串口发送数据:

    USART_SendData(USART1, Data);//向串口1发送数据
    while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET){};//等待发送结束     

串口接收数据

我们知道,stm32通过串口中断 void USART1_IRQHandler(void) //串口1中断服务程序

来接收数据 ,所以我们先来了解一下USART1_IRQHandler(void);



这里USART_RX_BUF[ ] 是接收缓冲数组,即接受的数据都存在这里。

//bit15,    接收完成标志0x0a(换行\n的ASCII值)      
//bit14,    接收到0x0d(回车\r的ASCII值)
//bit13~0,    接收到的有效字节数目

可以对接收来的数据进行处理,如USART_RX_BUF[0]

(特别注意:USART_RX_BUF[ ]类型为uint8_t)

switch(USART_RX_BUF[0])  {

        case '1': LED1_ON();break;
        case '2':LED1_OFF();break;
        case '3':LED2_ON();break;
        case '4': LED2_OFF();break;
        default:printf("error\n");break;

}


使用特权

评论回复
沙发
andygirl| | 2022-6-21 20:44 | 只看该作者
原子的例程

使用特权

评论回复
板凳
kiwis66| | 2022-6-24 20:46 | 只看该作者
switch是什么情况

使用特权

评论回复
地板
sadicy| | 2022-6-26 11:03 | 只看该作者
看数据,开关灯?

使用特权

评论回复
5
夏小橘| | 2022-6-27 13:44 | 只看该作者
这样可以接收数字串吗?如果数字串等于一串数字,然后输出其他值?

使用特权

评论回复
6
sparrow054| | 2022-6-27 20:54 | 只看该作者
不错,学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1536

主题

14520

帖子

9

粉丝