STMF4串口通信使用

news/2024/11/13 9:41:07/文章来源:https://www.cnblogs.com/shishusheng/p/18301629

目录
  • STMF4串口通信使用
    • USART的使用流程
    • 注意

STMF4串口通信使用

前提回顾:
串口通信概念介绍1
STM32串口通信概念介绍2
针对特定stm32F4板子的串口接线

折叠文本 USART指的是通用同步异步收发器,是STM32中的串行通信设备,STM32F407ZET6一共提供了6个串行接口供用户使用,其中4个为USART,2个为UART。UART指的是通用异步收发器,其实就是在USART的基础上裁掉了同步通信的功能,只保留了异步通信。 可以看到STM32中的USART采用工业标准中常用的NRZ编码进行通信,NRZ码指的是不归零码(Non-Return-Zero),指的是每次传输1bit数据后电平不归零,其实还有一种RZ码,指的是归零码(Return-Zero),指的是每次传输1bit数据后需要电平归零。

平时大家一般都是使用串口的异步通信功能,区分同步还是异步其实很简单,就是看是否在通信是对外提供时钟输出。

USART的使用流程

  1. 打开KEIL5工程,然后把ST公司提供的标准外设库的关于USART的源文件添加到工程中

  2. 参考并分析ST公司提供的代码例程以及提供的关于USART源文件的开头注释,进行理解

image

点击查看代码

void USART1_Config(u32 baud)
{USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;//打开了GPIO端口时钟  PA9和PA10RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//打开USART1的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//选择GPIO引脚的复用功能GPIO_PinAFConfig(GPIOA, GPIO_PinSource9 , GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);//配置GPIO引脚 注意:复用模式GPIO_InitStructure.GPIO_Mode 	= GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd 	= GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Pin 	= GPIO_Pin_9|GPIO_Pin_10;GPIO_Init(GPIOA, &GPIO_InitStructure);//配置串口参数+对串口初始化USART_InitStructure.USART_BaudRate = baud;																			        //波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;											//数据位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);//配置NVIC参数 + 对NVIC初始化NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//选择USART1的中断源,接收到数据则触发中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//打开串口USART_Cmd(USART1, ENABLE);
}//利用串口发送一个字符串
void  USART1_SendString(const char *str)
{while(*str){while( USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET );USART_SendData(USART1,*str++);}
}//前台程序就是中断服务程序,该程序是不需要手动调用的,当中断触发之后CPU会自动跳转过来执行该函数
void USART1_IRQHandler(void)
{uint8_t data;//判断中断是否发生if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET){   //从USART1中接收一个字节data = USART_ReceiveData(USART1);  //一次只能接收一个字节   //把接收到的数据转发出去USART_SendData(USART1,data);}
}int main()
{//1.硬件的初始化USART1_Config(9600);while(1){//把接收到的数据转发出去USART_SendData(USART1,'h');delay_ms(500);}
}

注意

  • 如果打算串口发送字符串,由于字符串属于字符序列,所以按照顺序发送字符,由于串口外设的发送数据寄存器是8bit的,所以每次只能发送1个字符,并且只有等上一次字符发送完成,才可以发送下一个字符。
  • 可以通过检测串口外设的发送数据寄存器是否为空,来判断待发送的字节是否发送完成,所以需要检测状态标志。
  • 配置GPIO引脚 注意:复用模式
  • 接收数据用上中断,要用上NVIC->NVIC、EXIT学习

参考李明轩老师第9天的笔记

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/743575.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT 学习笔记3--登录页面(数据绑定)

HarmonyOS NEXT 学习笔记3--登录页面(数据绑定)1.代码: import { promptAction } from @kit.ArkUI@Entry @Component struct Page_textInput_onchange {// @State UI刷新测试 [注意:不是双向绑定]username: string = password: string = build() {Column({ space: 20 }) {Te…

vue.js下载安装

参考—— https://www.jb51.net/article/283884.htm注:使用的是vue2 进入官网  https://cn.vuejs.org/ 文档——》vue2文档 或者直接通过这里    https://v2.cn.vuejs.org/v2/guide/ 复制绿色部分,粘贴到浏览器https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js 在在项目…

PMP-组织结构类型

职能型、矩阵型(强、弱、均衡)、项目导向(复合型、混合型),最常考,矩阵型为主。矩阵型具有多重的的汇报关系,但是他有专门的项目目的,好处是更高的提升项目的资源使用效率,又让项目不至于太高的人力成本。 职能型组织 ▪ 层级型结构,横向沟通困难,项目一般在职能部…

STM32串口通信概念介绍2

STM32串口通信 (1) 硬件接线说明采用4针的串口(TXD、RXD、GND、VCC),然后通过CH340芯片进行转换,就可以直接通过USB口转串口的方式达到和计算机通信的目的。 如果采用有线方式与PC机进行通信,则需要用到CH340转换芯片,数据会通过USART1串口传输。(1) 串口通信参数串口通信…

扩展Windows Server 2022的远程桌面连接数

远程桌面服务 配置 激活一、添加远程桌面授权服务打开服务器管理器:登录到Windows Server 2022服务器。 点击“开始”菜单,搜索“服务器管理器”并打开它。启动“添加角色和功能”向导:在服务器管理器中,点击左侧菜单中的“管理”然后选择“添加角色和功能”。 点击“下一步…

针对特种stm32F4板子的串口接线

硬件接线说明直接采用4针的串口(TXD、RXD、GND、VCC),然后通过CH340芯片进行转换,就可以直接通过USB口转串口的方式达到和计算机通信的目的。如果采用有线方式与PC机进行通信,则需要用到CH340转换芯片,数据会通过USART1串口传输。如果采用无线方式与手机进行通信,则不需…

电信千兆宽带体验

用的路由器拨号。应该是千兆光猫瓶颈了,换成2.5G或10G光猫应该能突破1100M速率

[rCore学习笔记 015]特权级机制

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 官方文档 仍然是一上来就丢出来的官方文档. 只摘抄了我觉得有意思的部分: 实现特权级机制的根本原因是应用程序运行的安全性不可…

从头构建和训练 GPT-2 |实战

引言 该项目[1]将引导您完成构建简单 GPT-2 模型的所有步骤,并使用 Taylor Swift引言 该项目将引导您完成构建简单 GPT-2 模型的所有步骤,并使用 Taylor Swift 和 Ed Sheeran 的一堆歌曲进行训练。本文的数据集和源代码将在 Github 上提供。 构建 GPT-2 架构 我们将逐步推进这…

易优eyoucms数据库配置文件是哪个在哪里?

易优eyoucms数据库配置文件位置在:网站根目录/application/database.php本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18301555

DedeCMS模板目录的文件目录结构

templets ┣━ default 默认模板目录 ┃ ┣━ style 模板CSS样式目录 ┃ ┣━ js 模板JS脚本目录 ┃ ┗━ images 模板图片目录 ┃ ┣━ lurd LURD系统模板 ┃ ┣━ plus 插件模板目录 ┃ ┗━ system 系统底层模板目录本文来自博客园,作者:黄文…

易优CMS首页常用标签汇总

网站名称:{eyou:global name=web_name /} 网站标题:{eyou:global name=web_title /} 站点描述:{eyou:global name=web_description /} 默认关键词:{eyou:global name=web_keywords /} 网站logo:{eyou:global name=web_logo /} 网站备案号:{eyou:global name=web_recordnu…