起始位为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的函数直接发送数据到串口上去了