4.串口通信

embedded/2024/10/18 21:25:16/

 USART波特率为9600,采用8倍过采样 USART6 fck频率:84Mhz;

USARTDIV = 1093.75

DIV_M = (u32)USARTDIV

DIV_F = (USARTDIV - DIV_M) * 8 + 0.5

USART6->BRR |= (DIV_M << 4) |= DIV_F

    float USARTDIV;u32 DIV_M,DIV_F;RCC->AHB1ENR |= 1;//端口A使能RCC->APB2ENR |= (1<<4);//usart1时钟使能GPIOA->MODER &= ~(0xf<<18);//PA9,PA10模式清零GPIOA->MODER |= (0xa<<18);//PA9,PA10模式为复用//AFP复位功能高位寄存器GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9//配置usart1USARTDIV = 84000000 / 16 / bps;//波特率配置DIV_M = (u32)USARTDIV;//整数部分公式DIV_F = (USARTDIV - DIV_M) * 16 + 0.5f;//小数部分公式USART1->BRR |= DIV_M<<4 | DIV_F;//写入波特率寄存器USART1->CR1 &= ~(1<<15);//过采样为16倍,OVER8 = 0;USART1->CR1 &= ~(1<<12);//字长:1 起始位,8 数据位,n 停止位USART1->CR1 |= (1<<3);//使能发送器USART1->CR1 |= (1<<2);//使能接收器USART1->CR2 &= ~(3<<12);//停止位为1bitUSART1->CR1 |= 1<<13;//串口1使能

串口四要素:波特率,停止位,数据位,校验位

波特率:控制两个器件之间的数据传输速率,波特率越大数据传输速率就快      MCU -à PC通信   波特率设置为9600/115200256000(也是可以的,不建议用)

停止位:代表一帧数据传输的结束    选择1bit

数据位:决定数据传输长度     8bit= 1byte

校验位:奇偶校验     不使用

Odd:奇校验

Even:  偶校验

串口初始化

  1. 硬件分析,先对原理图进行分析可以复用的IO口,确认IO口

  2. 复用的IO初始化为复用模式

  3. //AFP复位功能高位寄存器 不用担心发送和接受端,硬件自动调整

    GPIOA->AFR[1] |= 7<<8;//USART1_RX 复用到PA10

    GPIOA->AFR[1] |= 7<<4;//USART1_RX 复用到PA9

  1. 配置串口

  2. USART_BRR波特率寄存器

  3. USART_CR1对着配,使能以及过采样的倍数,最后串口使能

  4. USART_CR2设置停止位

USART_SR为状态寄存器,判断是否发送和接收数据

USART_DR为数据寄存器,包括数据接收和发送两个寄存器,是数据所在地


http://www.ppmy.cn/embedded/20809.html

相关文章

milvus indexcoord启动源码分析

indexcoord启动源码分析 // IndexCoord implements IndexCoord grpc server type IndexCoord struct{}indexcoord已经和datacoord合并。 // NewIndexCoord creates a new IndexCoord func NewIndexCoord(ctx context.Context, factory dependency.Factory) (*IndexCoord, err…

前端HTML5学习2(新增多媒体标签,H5的兼容性处理)

前端HTML5学习2新增多媒体标签&#xff0c;H5的兼容性处理&#xff09; 分清标签和属性新增多媒体标签新增视频标签新增音频标签新增全局属性 H5的兼容性处理 分清标签和属性 标签&#xff08;HTML元素&#xff09;和属性&#xff0c;标签定义了内容的类型或结构&#xff0c;而…

《架构风清扬-Java面试系列第25讲》聊聊ArrayBlockingQueue的特点及使用场景

ArrayBlockingQueue是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于数组实现的有界阻塞队列&…

变频器基础原理

文章目录 0. 基本知识1.三相的电压之和为02.正弦交流相量的相量表示法(相量只是表示正弦量&#xff0c;而不等于正弦量 &#xff1b;只有正弦量才能用相量表示)引入相量表示法目的:一种正弦量的产生方式:正弦量的相量表示&#xff0c;使用欧拉公式表示复数 3.用复数表示正弦量&…

Vue.js 的事件循环(Event Loop)机制

Vue.js 的事件循环&#xff08;Event Loop&#xff09;行为本质上遵循 JavaScript 的标准事件循环机制&#xff0c;这是因为 Vue 是构建在 JavaScript 之上的。不过&#xff0c;Vue 在其数据响应式系统中巧妙地利用了这一机制来实现高效的视图更新。下面简要介绍 Vue.js 中涉及…

Pytorch:Dataset类和DataLoader类

文章目录 一、Dataset 类1、定义2、示例 二、DataLoader 类1、定义2、参数3、示例&#xff1a;使用 DataLoader 三、总结四、实战1、load_data函数&#xff1a;2、IrisDataset类3、DataLoader 的使用 在机器学习和深度学习框架中&#xff0c;尤其是在 PyTorch 中&#xff0c;Da…

数学与机器学习:共舞于智能时代的双璧

随着人工智能的崛起&#xff0c;机器学习作为其核心技术之一&#xff0c;正引领着新一轮的科技革命。而在这场革命中&#xff0c;数学以其深邃的理论和精妙的工具&#xff0c;为机器学习提供了坚实的支撑。数学与机器学习之间的关系&#xff0c;如同琴瑟和鸣&#xff0c;共同编…

如何我现在是本地的文件路径不是http,用html如何打开

--别给我BB 如何我现在是本地的文件架路径不是http&#xff0c;用html如何打开? 答&#xff1a; 如果你想在HTML中打开本地文件路径的视频&#xff0c;可以使用file://协议。假设你的视频文件在本地的路径为/path/to/your/video.mp4&#xff0c;那么你可以将src属性设置为file…