当前位置: 首页 > 新闻中心
返回
列表

STM32基础知识:串口通信-轮询方式

发表时间: 2024-04-26 作者: 新闻中心

  计算机通信:将计算机技术和通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。按照数据传输方式的不同,可大致分为串行通信并行通信两类。

  串行通信:数据逐位传输,传输线少,长距离传输时成本低,但数据的传输控制较复杂。按照实现数据同步的方式,可大致分为同步串行和异步串行两种。

  同步串行通信:数据传输以数据块(一组字符)为单位,在一个数据块内,字符与字符间无间隔,收发双方依靠独立的时钟线进行信号的同步。

  异步串行通信:数据传输以单个字符为单位,字符和字符之间的间隙任意,字符内部每一位持续的时间相同。收发双方没有专门的时钟信号,而是依靠事先约定的字符格式和通信速率来完成通信适用于大批量的数据传输。

  并行通信:多位数据同时传输,传输控制简单,传输速度快,但是在长距离传输时硬件成本较高。

  异步通信的两个关键点是字符格式和波特率,字符格式决定了数据的传输形式,波特率决定了字符中每一位数据的持续时间。

  ❑ 1 位起始位,规定为低电平;❑ 5~8 位数据位,即要传送的有效信息;❑ 1 位奇偶校验位;❑ 1~2 位停止位,规定为高电平。

  ① 接收过程由起始位的下降沿启动;② 接收端等待8个时钟周期,以便建立一个接近比特周期中间的采样点;③ 接收端等待16个时钟周期,使其进入第一个数据位周期的中点;④ 第一个数据位被采样并存储在接收寄存器中;⑤ 串口模块在采样第二个数据位之前等待另外16个时钟周期;⑥ 重复此过程,直到所有数据位都被采样和存储;⑦ 由停止位的上升沿使数据线返回到空闲状态。

  奇偶校验:奇校验表示数据中“1”的个数与校验位“1”的个数之和为奇数;偶校验表示数据中“1”的个数与校验位“1”的个数之和为偶数。

  代码和校验:发送方将所发数据块求和,产生一个字节的校验字符附加到数据块末尾。接收方采用同样方式来进行检测。

  循环冗余校验:通过某种数学运算实现有效信息与校验位之间的循环校验,常用于磁盘信息的传输、存储区的完整性校验等。

  串口收发单元主要利用数据寄存器DR,发送引脚TX,接收引脚RX,以及三个通信状态位TXE、TC和RXNE来完成数据的接收和发送。

  TXE:发送数据寄存器空标志。当TDR寄存器的内容已经传送到发送移位寄存器 时,该位由硬件置1。如果串口控制寄存器CR1中的TXEIE位为1,将会触发发送数据寄存器空中断。注意:当TXE置1时,数据有可能还在发送。

  TC:发送完成标志。当发送移位寄存器的内容发送完成,同时TDR寄存器也为 空时,该位由硬件置1,表示本次数据传输已完成。如果串口控制寄存器CR1中的TCIE位为1,将会触发发送完成中断。注意:当TC置1时,数据才是真正地发送完成。

  RXNE:接收数据寄存器不为空标志。当移位寄存器的内容已经传送到接收数据寄存器RDR时,该位由硬件置1。如果串口控制寄存器CR1中的RXNEIE位为1,将会触发接收数据寄存器不为空中断。

  数据寄存器DR在硬件上分为TDR和RDR两个寄存器,通过数据的流向进行区分,在结构设计上采用了双缓冲结构;

  发送时,数据通过数据总线送入TDR寄存器,然后传送到发送移位寄存器完成数据转换,从并行数据转为串行数据,最后通过TX引脚发送;

  接收时,数据通过RX引脚逐位送入接收移位寄存器,8位数据接收完成后,送入RDR寄存器,供用户读取。

  HAL库在结构上,对每个外设抽象成了一个称为ppp_HandleTypeDef的结构体,其中ppp就是每个外设的名字。所有的函数都是工作在ppp_HandleTypeDef指针之下。

  抽象—串口初始化函数MX_USART2_UART_Init:将与MCU无关的通信参数存入句柄结构 + 使用HAL_UART_Init执行串口初始化操作,将句柄参数写入寄存器。

  承载—与MCU相关的初始化函数HAL_UART_MspInit:时钟初始化 + 引脚初始化

  轮询方式:CPU不断检测串口的状态标志来判断数据收发的情况。特点:程序设计简单,但CPU在检测标志位期间,无法执行其他任务,CPU利用率较低。

  中断方式:使能中断后,接收一字节数据或发送一字节后申请中断,在ISR中完成后续处理。在数据收发期间,CPU可以执行其他任务,CPU利用率较高。

  DMA方式:初始化时设置相关参数,启动DMA传输后,数据传输过程不需要CPU的干预。传输完成后,再产生DMA中断,由CPU进行后续处理。传输效率最高。

  在PC上利用串口调试助手发送数据到MCU,MCU调用scanf函数读取数据,然后调用printf函数发送应答信息到PC。

  设置通信参数:波特率115200,8位数据位,无奇偶校验,1位停止位,使能接收和发送,16倍过采样(CubeMX默认配置)

  ;//HeapSize(inBytes) 0x0-0xFFFFFFFF:8 ;// Heap_SizeEQU0x00000020;//定义堆空间大小 AREAHEAP,NOINIT,READWRITE,ALIGN=3;//定义一个数据段,8字节对齐 __heap_base Heap_MemSPACEHeap_Size;//保留Heap_Size的堆空间 __heap_limit;//标号,代表堆末尾地址,后面有用 PRESERVE8;//指示编译器8字节对齐 THUMB;//指示编译器为THUMB指令 ;VectorTableMappedtoAddress0atReset AREARESET,DATA,READONLY;//

  在配置中断时需要配置优先级,在此对优先级进行总结。 首先,优先级分为抢占优先级和响应优先级。判定顺序为先判定抢占优先级,如果抢占优先级相同的情况下再判定响应优先级。 始终先解决抢占优先级高的! 优先级由4位组成区间为 0000 ~ 1111 因为要分为抢占优先级和响应优先级,故一共有5种分组。、 看代码注释 具体分配如下(红线前为抢占优先级后为响应优先级) 还看不懂就看这个表: 故设置时不能超过相对应的值。

  入门之优先级分组 /

  一、简述 记--使用定时器4输出PWM来实现呼吸灯效果。 在人眼辨识能力范围内,调节LED亮的时间,达到LED灯的亮度不同。例:给低电平LED就亮,如果一个脉冲中全是低电平那么LED最亮,如果一个脉冲一半是高电平,一半是低电平,那么LED就显得有一点暗,这样调整脉冲中的高低电平的比例就能够达到LED的亮度调节。 二、效果 LED1逐渐由暗变亮,接着由亮变暗。 三、工程结构 四、源文件 #include stm32f4xx.h #include led.h #include pwm.h //粗延时 void delay_ms(int ms) { int i,j; for(i=0; i m

  的PWM呼吸灯系统设计 /

  串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种很重要且广泛使用的通信方式在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,并且要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同若嵌入式系统中。中断服务子程序在系统运行过程中占用了较多的时间,就非常有可能在中断眼务子程序正运行时,又产生一个同类型或别的类型的中断,从而造成主程序得不到执行或后续中断数据丢失所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3种帧同步方法通过

  帧的同步方法 /

  ● 中断映射单元:将可能会产生中断的USB事件映射到三个不同的NVIC请求线上: ─ USB低优先级中断(通道20):可由所有USB事件触发(正确传输,USB复位等)。固件在处理中断前应当首先确定中断源。 ─ USB高优先级中断(通道19):仅能由同步和双缓冲批量传输的正确传输事件触发,目的是保证最大的传输速率。 ─ USB唤醒中断(通道42):由USB挂起模式的唤醒事件触发。 USB_HP_CAN1_TX_IRQn= 19, /*! USB Device High Priority or CAN1 TX Interrupts */ USB_LP_CAN1_RX0_IRQn = 20, /*! USB Dev

  学习笔记之USB中断配置初始化函数 /

  讲解GPIO操作原理,使用各种各样不同型号的STM32 打开官方的《STM32中文参考手册》8.1 8.2小节 GPIO功能描述 我们今天重点要分析的是下图 上图是100脚的STM32单片机 1. GPIO是包含引脚的 2. 如何找GPIO功能: 看数据手册 在第3章 我们要看GPIO口的功能就看这里 在这个表里面我们就能够查找到每一个GPIO口的功能 接下来我们要重点 这里分成7个部分 1.引脚进来有两个保护二极管 作用:IO口电流输入高于3.3v时,上流 (保护芯片)但是 如果输入电压大于VDD很多的话 单片机还是会烧坏 举个例子: IO口直接接电机的时候 电机启动的时候会有反相电动势 会有过冲

  (3) GPIO口功能讲解 GPIO 口输入输出 寄存器配置 /

  STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。 1. 何为占先式优先级(pre-emption priority) 高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。 2. 何为副优先级(subpriority) 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应—非抢断式响应(不能嵌套)。 3. 判断中断是否会被响应的依据 首先是占先式优先级,

  (Cortex-M3)中NVIC(嵌套向量中断控制)的理解 /

  前提 keil uVision4 奋斗STM32开发板V5 STM32F103VET JLink 具体 新建工程 新建文件夹并命名,在此文件夹下建立user,fwlib,cmsis,output,listing等子文件夹。 user用于存放工程文件和用户层代码,包括主函数main.c。 fwlib用于存放STM32库里的inc和src文件夹,它们包含了芯片上所有的驱动。 smsis用于存放库自带的启动文件和一些位于cmsis层的文件。 output用于保存编译后的输出文件。 listing用于保存编译后生成的链接文件。 接下来打开Keil,新建工程和组,将对应的文件添加到对应的文件夹中。

  】入门 · 流水灯 /

  启动文件浅析

  PID控制C语言实现位置 增量型抗积分饱和积分分离 变积分

  F411的无刷直流电机FOC控制管理系统设计

  信号完整性指南:实时测试、测量与设计仿线FTG的无感正弦波无刷电机驱动电路

  STM32CubeMX and STM32Cube HAL basics

  嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  ST(意法半导体)近日推出了全新的STM32U0微控制器,这款基于Cortex-M0+内核的产品,可以在带有实时时钟(RTC)的待机模式下,实现仅为160n ...

  1 DMA概述直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完 ...

  在FreeRTOS中,队列是实现任务之间同步、互斥和通信的一种重要方法(其他的实现方法有:任务通知、事件组、信号量、互斥量)。任何任务都可 ...

  01前言本文是上文 《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。倘若你还没有阅读此文,那么建议你先阅读下,然后再回过头来阅读 ...

  从51开始,单片机玩了很久了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但始终没开始,原因-----不知道玩了ARM可以做什么(对 ...

  台积电4nm工艺:天玑9000 CPU能效领先骁龙8 Gen1高到49%

  村田稳定、长效的负离子/活氧发生器助力智能家电厂商打造未来健康生活空间

  Teledyne FLIR IIS宣布推出用于为成像系统选择最佳机器视觉组件的新在线平台

  台积电积极布局硅光子领域,目标 2026 年推出 COUPE 共封装光学模块

  IMDT和Hailo携手推出边缘人工智能解决方案,旨在实时实现极致性能

  ENNOVI推出一种用于电动汽车电池互连系统低压连接的新型柔性线路板生产工艺

  美光率先量产面向客户端和数据中心的 200+ 层 QLC NAND 产品

  ELEXCON 2022 深圳国际电子展11月6日(新档期)开幕,速领门票!更有N重好礼等你拿!

  CadenceLIVE China 2022中国线上用户大会 报名中!

  PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云: