当前位置: 首页 > news >正文

串口实验(10.3)

A7核:

创建一个uart.h文件

将要引用的头文件

                                stm32mp1xx_gpio.h

                                stm32mp1xx_rcc.h

                                stm32mp1xx_uart.h写入

写入要用到的函数

                                初始化函数uart_init()

                                发送一个字符put_char()

                                接受一个字符get_char()

                                发送一个字符串put_string()

                                接受一个字符串get_string()

 

创建一个uart.h

在uart_init()中

        将RCC寄存器使能,给GPIOB,GPIOG,UART4使能

        给PB2和PG11引脚设置为复用功能UART4_Rx/Tx

        因为后续会出现吃字符的问题,所以要调用一个延时函数

        设置USART的参数

                        设置8位的数据位

                        设置16倍采样率

                        无奇偶校验位

                        将发送和接受寄存器使能

                        串口使能

在put_char()中

        形参得加入一个你要输入的字符串 char str

        验证发送寄存器有无数据

                while(!(USART4->ISR & (0x1<<7)));  

                无数据循环,有数据往下运行

        发送数据(把数据填入到TDR寄存器中)

        判断数据是否发送完成

                未完成等待,完成结束函数

在get_char()中

        验证接收寄存器有无数据

                while(!(USART4->ISR &(0x1<<5)));  

                无数据等待,有数据往下运行

                读数据(把RDR寄存器中的值赋给创建的变量)

                将变量返回

在put_string()中

        形参得加入一个你要输入的字符串 char *str

        判断是否为'\0',是的话结束发送,不是就运行循环内容

                验证发送寄存器有无数据

                        while(!(USART4->ISR & (0x1<<7)));  

                        无数据循环,有数据往下运行

                发送数据(把数据填入到TDR寄存器中)

                判断数据是否发送完成

                        未完成等待,完成结束函数

在get_string()中

                因为最多收纳50个字符

                循环49次,49次内有回车就结束,把创建的buf返回,没有则在49位加入一个'\0'并结束接收

                验证接收寄存器有无数据

                while(!(USART4->ISR &(0x1<<5)));  

                无数据等待,有数据往下运行

                读数据(把RDR寄存器中的值赋给创建的变量)

                将变量返回

 

 在main.c函数中将函数填入

 

M4核:

​​​​​​​

 

相关文章:

  • 猿创征文 | 使用Docker部署openGauss国产数据库
  • Python 常用内置函数
  • 论文笔记系列:主干网络(二)-- DenseNet
  • 强化记忆:pycharm 部分快捷键
  • Python实现基于机器学习的手写数字识别系统
  • Vision Transformer和MLP-Mixer联系和对比
  • Python 变量
  • Hadoop3 - 基本介绍与使用
  • 网络安全的行业黑话 ——防守篇之技术与服务业
  • Python-入门-类的特殊成员和扩展(十一)
  • 大数据技术Flink详解
  • 机器学习:详解半朴素贝叶斯分类AODE原理(附Python实现)
  • SpringBoot+Vue项目个性化音乐推荐系统
  • 【C语言】手把手带你搭建环境,写出人生中第一个C语言程序~你好,世界
  • java------方法的覆盖[重写],super和final关键字
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • ECMAScript6(0):ES6简明参考手册
  • HTTP 简介
  • Java深入 - 深入理解Java集合
  • JS笔记四:作用域、变量(函数)提升
  • Netty 4.1 源代码学习:线程模型
  • React的组件模式
  • Vim 折腾记
  • 阿里云Kubernetes容器服务上体验Knative
  • 让你的分享飞起来——极光推出社会化分享组件
  • 人脸识别最新开发经验demo
  • 删除表内多余的重复数据
  • 实习面试笔记
  • 用简单代码看卷积组块发展
  • 原生Ajax
  • 自动记录MySQL慢查询快照脚本
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #laravel 通过手动安装依赖PHPExcel#
  • #NOIP 2014#Day.2 T3 解方程
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.13) SiK无线电高级配置(五)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (七)理解angular中的module和injector,即依赖注入
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • .FileZilla的使用和主动模式被动模式介绍
  • .java 9 找不到符号_java找不到符号
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • .NET中GET与SET的用法
  • @AutoConfigurationPackage的使用
  • @Bean有哪些属性
  • @font-face 用字体画图标
  • @KafkaListener注解详解(一)| 常用参数详解