串口实验(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核:

​​​​​​​

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值