stm32串口的学习

 

起始位为0 数据开始发送

数据的长度为5678位:

校验位:奇校验: 数据中的1的个数+上校验位中的个数为计数,如果数据中1的个数为基数那么校验位为0,如果数据位中的1的个数为偶数,那么校验位变为1,总之是使得所有的1的个数为1就好了,然后校验位去凑

串口的配置:

配置是照片那个:GPIO时钟,串口的时钟,引脚复用的时钟

配置GPIO结构体

 配置串口的结构体

串口的发送

APB2 上有USART1 使用的频率是72MHz

APB1 上的 UART  使用的是2分频 36MHz

初始化串口:

 结构体的定义要放到函数的最前面

打开GPIOA的时钟,使能

打开UART的时钟,使能

打开引脚复用的时钟,使能

定义GPIO结构体: 只需要定义一次

配置输入TX  PA_9

配置GPIO的结构体: 模式 推挽输出   引脚 PA9,速度 50Mzh

初始化结构体

配置输入RX  PA_10

配置GPIO的结构体:  模式 浮空输入 引脚PA10  ,速度50MHz

初始化结构体

配置串口结构体:

定义串口结构体:

配置结构体: 波特率:115200 硬件流 :没有用到 模式 :输入或输出 校验位 :无 校验 停止位:一位  字节长度 :8位

初始化串口结构体

打开串口

单片机发送字符到上位机上

while中

串口发送字符

 while{串口判断标识符}

串口发送字符

自己封装函数:

函数的参数: 串口发送字符串的参数;

函数的里面  就是发送字符串的函数,判断标识符是否发送成功

串口发送字符串:

自己封装函数:

函数的参数: 需要用到指针方便指针的移位

利用dowhile

这里判断标志位是整个判断是否完成

重定义利用c语言printf 发送字符串

需要用到stdio.h  需要在魔术棒勾选

int  fputc(int ch, FILE *)

{

        发送字符  这里参数需要强制转化

}

 重定向  输入

只需要用到接收寄存器非标值位;

然后返回  接收函数

 

重定向 这两个函数后:直接就可以用print的函数直接发送数据到串口上去了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值