stm32及接口

串口协议
串口通信

串口通信(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单、便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通 讯方式输出调试信息。

RS-232标准

RS232协议是一种流行的串行接口,用于将计算机连接到诸如串口服务器之类的联网设备。用于实现RS232的串口引脚以及有关该协议的一些其他参考信息。
  RS232协议使用不同于标准5V的信号电平传输电线数据,以最大程度地减少信号干扰。它以恒定速率执行异步传输,该速率与起始脉冲信号的电平同步。最长20米的距离是使用RS232接口进行可靠数据传输的极限。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwTfRXkN-1666001548660)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017153858173.png)]

RS232电平与TTL电平的区别

根据通讯使用的电平标准不同,串口通讯可分为 TTL标准和 RS-232标准

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LDrmn1d2-1666001548662)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017162133555.png)]

USB/TTL转232“模块

USB转串口即实现计算机USB接口到物理串口之间的转换。可以为没有串口的计算机或其他USB主机增加串口,使用USB转串口设备等于将传统的串口设备变成了即插即用的USB设备。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-US9BnadF-1666001548663)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017162602956.png)]

stm32的简单应用
led流水灯

首先配置GPIO口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sDaBkdhC-1666001548664)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017164428696.png)]

然后led要有时间间隔

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hVu2W6I7-1666001548664)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017164628245.png)]

然后写一个循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2hgt6C7-1666001548665)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017164727130.png)]

这样的一个简单流水灯程序就编写完成了,可以用keil来观察三个GPIO的波形

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9m4yhtG-1666001548666)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017165056251.png)]

串口通信
串口通信使用到的GPIO引脚配置
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能USART1,GPIOA时钟
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化GPIOA.9
//USART1_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  //PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化GPIOA.10 

串口主要参数设置
USART_InitTypeDef USART_InitStructure;
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;
//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
//数据格式,8位
USART_InitStructure.USART_StopBits = USART_StopBits_1;
//一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No;
//无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
//收发模式
USART_Init(USART1, &USART_InitStructure); 
//初始化串口1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
//开启串口接受中断

串口使能
USART_Cmd(USART1, ENABLE);  //使能串口1 

然后接收发送函数
void usart1_send_byte(char data) 
{ 
    //USART_GetFlagStatus 用来获取串口SR寄 存器中的指定标志位 
    //获取TXE标志,判断其是否被设置(SET)   while(USART_GetFlagStatus(USART1,USART_F LAG_TXE) != SET); 
    //USART_SendData 用来通过指定串口发送数 据   USART_SendData(USART1,data); 
}
char usart1_recv_byte(void) 
{ 
    char ch = 0; 
    while(USART_GetFlagStatus(USART1,USART_F LAG_RXNE) != SET); 
    ch = USART_ReceiveData(USART1); 
    return ch; 
}

在野火助手里查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3zl1P8rN-1666001548666)(C:\Users\yes\AppData\Roaming\Typora\typora-user-images\image-20221017170352256.png)]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值