小程序代理哪家好,廊坊seo优化排名,小企业网站建设方案,上海嘉定建设局官方网站Ⅰ、概述 关于USART串口通信#xff0c;可以说是MCU的标配。不管是在实际项目应用中#xff0c;还是在开发过程中#xff0c;它都起着很重要的作用。 在项目应用中我们常常使用UART串口进行通信#xff0c;根据通信的距离及稳定性#xff0c;还选择添加RS232、RS485等对UA…Ⅰ、概述 关于USART串口通信可以说是MCU的标配。不管是在实际项目应用中还是在开发过程中它都起着很重要的作用。 在项目应用中我们常常使用UART串口进行通信根据通信的距离及稳定性还选择添加RS232、RS485等对UART数据进行转换。 在开发过程中我们常常用它来打印调试信息我们购买的开发板基本上都有一个UART通信接口DB9的接头这个接口主要的一个作用就是用来开发时调试使用。 本文主要针对STM32初学者使用STM32F4标准外设库、Keil集成IDE对STM32F4的USART进行配置及描述。1.详细描述使用自定义打印数据、自定义中断接收数据2.重定义打印数据printf 关于本文的更多详情请往下看微信请点击“阅读原文”查看更多链接内容。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能精简了官方的代码对初学者一看就明白以简单明了的工程供大家学习。 笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘欢迎下载测试、参照学习。 提供下载的软件工程是STM32F417的但F4其他型号也适用在工程中修改一下型号就行。 360云盘下载地址 https://yunpan.cn/cBQiZXDsvacwV 访问密码 a98e STM32F4资料 https://yunpan.cn/cR2pxqF5x2d9c 访问密码 53e7 Ⅲ、USART初始化描述 笔者以F4标准外设库同时也建议初学者使用官方的标准外设库为例来描述一下USART的初始化。 USART的初始化大致分三个部分 1.USART时钟 该函数位于bsp.c文件下面 重点注意 A.USART时钟的配置要在USART其他配置USART初始化、中断等前面 B.匹配对应时钟。 比如RCC_APB2外设不要配置在RCC_APB1时钟里面 【如RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译通过但这是错误的代码】 2.USART引脚配置 该函数位于usart.c文件下面 注意 A.GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); 引脚配置中引脚功能复用的配置比较重要很多从F1转型到F4的朋友往往会忽略掉这一点F1中没有这个配置选项。 B.GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF; 这里配置为复用模式。 3.USART参数配置 该函数位于usart.c文件下面 A.USART波特率 对于STM32来说波特率可根据用户自定义也就是数值随便用户设定但需要主要范围和误差值。 关键的一点它不受系统使用的变化而受影响这就是使用标准外设库的好处也就是说它自适应系统时钟。 B.USART模式: USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; 提供实例是收发模式都有但提醒一下有些朋友从一个地方拷贝代码自己的工程就要注意如果你使用了接收的功能拷贝过来的代码没有配置接收那就有问题。【在实际开发中有人遇见过这类问题】 C.中断配置 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 中断功能也是在应用中比较常用的一个功能特别是接收中断。如果使用的USART中断这个函数就需要配置发送中断不常见如果没有发送中断的要求就不需要配置发送功能。 Ⅳ、USART重定义打印数据 相信来学习该文章知识的朋友都应该学习过C语言知识都应该知道打印数据printf这个函数。但是很多初学者可能不理解怎样才能实现printf这种打印方式其实只需要简单的两步步骤就能实现printf这个函数。这一节就是关于描述使用USART来重定义打印数据。 1.使用微库 project - Options for Target - Target窗口下勾选上”Use MircoLIB”使用微库。 由于printf函数是标准的函数这里我们就直接使用标准的“微库”而不自己设计该函数的功能。 2.重定义函数 #include stdio.h 首先要包含头文件”stdio.h” 提供的实例工程位于usart.h文件下面。 该函数位于usart.c文件下面 我们使用printf函数需要重定义fputc函数。 经过上面两步骤我们就可以实现printf函数打印输出UART数据了。 Ⅴ、USART自定义打印数据 该函数位于usart.c文件下面 我们自定义的打印函数功能就比较简单计算字符串个数。 Ⅵ、USART中断接收 接收数据可以查询接收也可以中断接收查询的效率比较低我们实例提供的是中断接收的方式实现的效果的接收到一个数据就将其发送出去。 中断接收需要配置几个地方 1.使能中断 USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); 这个函数位于USART初始化里面主要是使能USART中断。 2.配置NVIC 该函数位于bsp.c文件下面 配置NVIC通道和优先级。 3.USART接收中断 该函数位于stm32f4xx_it.c文件下面 主要是中断接收和处理效果就是有中断就发送接收的数据。 Ⅶ、说明 关于笔者提供的软件工程实例可关注微信在会话框回复“关于工程”有关于工程结构描述、型号修改等讲述。 以上总结仅供参考若有不对之处敬请谅解。 Ⅷ、最后 更多精彩文章我讲第一时间在微信公众号里面分享。 本着免费分享的原则方便大家手机学习知识定期在微信平台分享技术知识。如果你觉得分享的内容对你有用又想了解更多相关的文章请用微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注将有更多精彩内容等着你。 转载于:https://www.cnblogs.com/strongerHuang/p/5643498.html