CKS32F103微控制器原理与实践 课件 第7、8章 中断和事件、USART串行通信_第1页
CKS32F103微控制器原理与实践 课件 第7、8章 中断和事件、USART串行通信_第2页
CKS32F103微控制器原理与实践 课件 第7、8章 中断和事件、USART串行通信_第3页
CKS32F103微控制器原理与实践 课件 第7、8章 中断和事件、USART串行通信_第4页
CKS32F103微控制器原理与实践 课件 第7、8章 中断和事件、USART串行通信_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CKS32F103微控制器教学课件07中断和事件简单来说,中断就是打断CPU当前正在做的事情,让它去处理更紧急的任务。就像这张图里的交警,当路口出现紧急情况时,他会中断正常的车流,优先处理特殊情况。嵌入式系统在运行过程中需要及时应对各种突发事件。外部设备可能引起引脚电平变化,如锅炉水位越限、电机温度异常、火焰传感器报警等,片上外设则可能产生计数器溢出、AD转换完成等信号。这些事件在安全生产中的紧急性和重要性各不相同,因此处理方式也有所区别当检测到锅炉水位低于下限时,系统会通过增大给水调节阀开度来提升液位,同时触发报警提示。而当电机温度传感器监测到温度超过设定值时,温度继电器则会触发联锁保护机制,立即切断电机电源、强制停机并启动散热装置,以避免温度持续升高导致绕组绝缘损坏或线圈烧毁。相比之下,电机过温保护的紧急程度明显高于水位越限。引言:为何需要中断与事件?轮询方式的弊端•效率低下:CPU不断循环查询事件状态,占用大量资源,导致其他任务无法及时执行。•实时性差:由于CPU有查询间隔,极易错过持续时间极短的信号脉冲或紧急事件。中断与事件的优势•中断(Interrupt):支持“主动上报”机制,打断CPU当前流程,即时响应处理,极大提升系统实时性。•事件(Event):纯硬件级信号联动,无需CPU介入即可直接触发DMA或外设操作,实现极致效率。为什么我们需要中断和事件?想象一下,如果CPU只能通过不断检查的方式来发现锅炉水位是否越限、电机温度是否异常、按键是否被按下等,会非常低效。中断和事件机制正是为了解决这个问题。中断让CPU能被事件主动通知,而事件则能实现硬件间的自动协同工作,两者共同构成了现代MCU高效运行的基础。基于ARMCortex-M内核的MCU,对紧急或重要状况的响应依赖中断和事件两种硬件触发机制。二者虽然都可以由片上外设或片外外设触发,但在触发后的处理方式和对系统的影响上存在显著差异。中断需要CPU介入并执行相应的中断服务程序,而事件则无需CPU参与即可由硬件直接完成后续动作7.1中断(Interrupt)和事件(Event)▍1.什么是中断?程序运行过程中,当发生特殊或异常事件时,CPU会暂时中止当前正在执行的程序,转而执行与异常相关的处理程序,待处理完成后再返回原来的位置继续运行。实时响应立即响应按键输入、定时器溢出等异步事件,保证实时性。提高效率无需主动“轮询”等待事件,通过被动通知的方式,最大化解放CPU资源。处理异常在系统运行过程中,快速处理硬件错误、非法指令等突发故障。7.1中断(Interrupt)和事件(Event)系统运行过程中能够引发中断的事件称为中断源。中断源通常以脉冲或电平的形式出现。中断源:分为外部中断源和内部中断源。外部中断源指来自MCU外部的事件,例如按键操作、传感器的报警信息、通信接口接收数据等。内部中断源指由MCU内部或片上外设产生的事件,如定时器溢出、ADC转换结束、系统异常、软件触发等。由外部中断源触发的中断称为外部中断,由内部中断源触发的中断称为内部中断。中断源7.1中断(Interrupt)和事件(Event)中断服务程序ISR

当某个紧急或重要事件触发中断时,CPU将跳转至用户编写的处理代码,该代码称为中断服务程序,即ISR。ISR需针对性处理特定中断事件,快速响应并高效执行,以应对高优先级任务ISR中的常见任务:包括清除中断标志、数据处理和紧急控制、状态更新等。清除中断标志是了避免中断反复触发。ISR的质量直接影响系统的稳定性,因此编写时需遵循代码尽量简短、减少嵌套、慎用全局资源和避免阻塞操作的原则7.1中断(Interrupt)和事件(Event)ISR设计时尽量遵循:尽量简短:ISR会中断原程序执行,过长的处理会增加系统延迟,尤其是实时系统。复杂逻辑应放在ISR之外,可在ISR中设置标志位通知主程序处理。减少嵌套:虽然Cortex-M支持高优先级中断打断低优先级中断的嵌套操作,但过多嵌套会增加栈空间消耗和调试难度。慎用全局资源:ISR访问全局变量时,需避免主程序与ISR的资源竞争,可通过关中断、使用互斥锁等方式。避免阻塞操作:ISR中禁止使用延时函数、等待外设响应等阻塞性操作,否则会导致其他中断无法及时响应。7.1中断(Interrupt)和事件(Event)中断处理过程:包括中断请求产生、CPU响应中断、保护现场与执行ISR、恢复现场与继续执行原程序。中断请求产生:外部或内部事件的中断源触发中断,并在中断使能的情况下向CPU发送中断请求信号,硬件将该中断请求挂起,同时置位中断标志。挂起指的是中断请求已经产生,但由于某种原因暂时未被CPU处理,处于等待状态的情况。

CPU响应中断:若CPU处于中断使能状态,即未屏蔽该中断,且当前正在执行的指令已完成,CPU将暂停原程序执行,转而响应中断。7.1中断(Interrupt)和事件(Event)保护现场与执行ISR:CPU首先保存原程序的上下文信息,如PC值、寄存器值等,通常存储于栈内存中,以防止后续操作覆盖关键数据。保护现场是确保中断处理完成后能正确恢复原程序运行的关键步骤。随后,CPU跳转至ISR入口地址执行相应的处理逻辑,这是中断处理的核心环节,由硬件自动完成以确保跳转的快速与准确。恢复现场与继续执行原程序:中断服务程序结束后,CPU从之前保存的上下文信息中恢复原程序状态,即恢复现场。恢复现场的作用与保护现场完全对应,将中断发生前保存的系统状态重新加载到CPU中,并根据保存的PC值返回原程序中断位置,继续执行后续指令7.1中断(Interrupt)和事件(Event)7.1中断(Interrupt)和事件(Event)中断优先级:基于紧急程度的分级机制称为中断优先级.为确保CPU能及时响应并处理系统中不同紧急程度的事件,需根据中断源的重要性、紧迫程度及实时性要求,为其划分不同的优先级级别.中断嵌套:高优先级中断对低优先级中断的抢占.如在计数器溢出中断发生后,CPU响应并执行其对应的ISR。此时检测到锅炉水位低于下限,而锅炉水位中断的优先级高于计数器溢出中断,CPU则立即保存当前计数器ISR的执行现场,并暂停其运行,转而进入锅炉水位ISR。当锅炉水位ISR执行完毕后,CPU再恢复之前保存的现场,继续完成计数器溢出ISR的执行7.1中断

和事件▍2.事件事件是嵌入式系统中一种特殊的触发机制,主要用于触发特定外设模块操作或唤醒内核,不引起CPU程序流程的跳转,因此也被称为非中断型事件。硬件级同步外设间直接触发,无需CPU介入,实现精准的时序同步,如定时器自动触发ADC转换。零CPU开销处理逻辑完全由硬件完成,响应速度极快,不占用宝贵的CPU资源去处理中断。低功耗唤醒可配置为从停机或待机等低功耗模式中唤醒系统,平衡系统性能与功耗需求。事件的触发逻辑与中断类似,均由外部信号或内部状态的变化触发,触发源称为事件源。3中断与事件的区别与联系与中断相比,事件没有对应的服务函数,也不涉及现场保存与恢复,能显著降低CPU负载,提升系统响应速度。因此事件机制特别适用于硬件间需直接联动、无需CPU参与中间环节的场景7.1中断

和事件中断(Interrupt)●触发对象:CPU(软件层面的响应)●CPU参与:需要,执行中断服务函数●响应路径:经NVIC仲裁,产生异常进入●延迟表现:相对较高(微秒级

μs)●典型用途:处理按键、串口等需CPU干预的任务事件(Event)●触发对象:DMA、ADC等其他硬件外设●CPU参与:不需要,纯硬件联动操作●响应路径:直接连接到目标外设,绕过CPU●延迟表现:极低(纳秒级ns),效率极高●典型用途:硬件模块间的自动同步与握手二者联系:同一个物理信号源(例如GPIO引脚的电平变化或定时器溢出),可同时被配置为触发中断(唤醒CPU处理逻辑)和事件(触发DMA传输数据),灵活满足复杂场景需求。7.1中断

和事件项目中断事件触发方式外部信号或内部状态变化触发外部信号或内部状态变化触发触发结果CPU跳转执行中断服务程序(ISR)直接驱动相关外设硬件操作CPU参与需要CPU介入,保存/恢复现场并执行ISR不需要CPU介入,全程由硬件完成程序支持必须编写对应的中断服务函数无需编写服务函数效率影响需保存/恢复现场,执行ISR,增加CPU负担提高系统效率,减轻CPU负担嵌套可能可设置优先级并允许中断嵌套不存在嵌套概念7.2CKS32F103中断系统特点Cortex-M3的核心组件嵌套向量中断控制器NVIC:与内核紧密耦合,负责统一管理所有的异常即内核异常和外设中断,可实现中断的启用与屏蔽、优先级分配、嵌套控制等,并支持低延迟响应及晚到中断,实现高优先级中断在低优先级处理期间到达时的高效处理。CKS32F103直接采用Cortex-M3内置的NVIC作为中断控制器,因此中断优先级管理、嵌套机制、低延迟响应等核心功能均由NVIC实现,与具体厂商无关。CKS32F103芯片厂商的主要工作是在外设层面将外部中断挂接到NVIC的中断通道,而具体的中断源数量、类型及在向量表中的分布位置,则由CKS32F103厂商定义和实现。7.2CKS32F103中断系统特点CKS32F103芯片中NVIC的特点:43个可屏蔽中断通道,除了16个Cortex™-M3的中断线;16个可编程的优先等级,使用了4位中断优先级;低延迟的异常和中断处理;电源管理控制;系统控制寄存器的实现;Cortex-M3内核与异常处理程序之间建立对应关系的关键是异常向量表。异常向量表相当于一套导航系统,通过固定的地址映射机制,实现对各类异常的快速定位、准确区分与统一管理,是保证嵌入式系统稳定运行的关键硬件结构7.3异常向量表(ExceptionVectorTable)中断映射:将外设产生的中断请求与处理器可识别的中断向量建立对应关系的过程异常向量表:反映中断映射关系,是ARM架构CPU中实现异常快速响应的关键数据结构。异常向量表中的每个元素对应一个异常处理程序的入口地址,用于在异常发生时,快速引导CPU跳转到对应的处理代码中断请求号IRQn:所有异常的唯一标识,分为内核异常向量和外设中断向量两部分。内核异常向量:由ARM官方定义,属于系统级内核异常。其IRQn编号为负数,在所有Cortex-M3处理器中固定不变,无厂商差异,优先级通常高于外设中断。例如Reset、NMI、HardFault、SysTick等。外设中断向量:由芯片厂商根据自身器件的外设资源进行定义,IRQn编号为非负数。7.3异常向量表(ExceptionVectorTable)异常/中断的入口地址当异常或者中断发生时,若CPU响应这些异常或者中断,需要获取相应异常或中断的中断服务程序入口地址,再由入口地址跳转到中断服务程序执行。对于CKS32F103,当某个中断被响应时,硬件会根据中断源的IRQn计算中断服务程序的地址,公式如下:中断服务程序地址=向量表基地址+(IRQn+16)×4CKS32F103的默认向量表基地址=0x00000000CKS的固件库文件

cs32f10x.h通过宏定义将IRQn号与宏名联系起来,编写中断服务程序时直接使用宏名即可。中断入口地址在启动代码文件中定义,如startup_cs32f10x_yy.s文件7.4片上外设的中断/事件机制片上外设中断的名称:由于中断服务程序名称与向量表中的入口地址强绑定,以便CPU通过向量表索引直接跳转至该函数名对应的地址,因此函数名称不允许随意修改。//cs32F10x.h中定义的中断请求编号TIM3_IRQn=29,/*!<TIM3globalInterrupt*/I2C1_EV_IRQn=31,/*!<I2C1EventInterrupt*/I2C1_ER_IRQn=32,/*!<I2C1ErrorInterrupt*/SPI1_IRQn=35,/*!<SPI1globalInterrupt*/USART1_IRQn=37,/*!<USART1globalInterrupt*/USART2_IRQn=38,/*!<USART2globalInterrupt*///startup_cks32f10x_yy.s中定义的中断服务程序名称TIM3_IRQHandlerI2C1_EV_IRQHandlerI2C1_ER_IRQHandlerSPI1_IRQHandlerUSART1_IRQHandlerUSART2_IRQHandler7.5外部中断/事件与通用GPIO映射CKS32F103提供19条独立的外部中断线EXTI0~EXTI18。每条EXTI线都用于将外部

GPIO引脚信号或内部特定外设信号映射为中断或事件请求,且同一时刻每条EXTI线仅能绑定一个输入信号源,确保触发逻辑无冲突。EXTI0~EXTI15为GPIO引脚的专用映射通道,解决GPIO引脚数量远多于EXTI线数量的扩展需求。CKS32F103的GPIO引脚多达80余个,远多于EXTI0~EXTI15的16条线,因此MCU通过功能复用AFIO的映射机制,保证任意GPIO引脚均可作为外部中断源或事件源。7.5外部中断/事件与通用GPIO映射

EXTI16~EXTI18为MCU内部特定外设信号的映射通道,仅连接与系统核心状态相关的外设,无法修改信号源,用于监测MCU关键运行状态并触发响应。电源电压调节器PVD映射到EXTI16,当电源电压低于阈值时,通过EXTI16产生中断或事件,处理电源异常。RTC闹钟事件映射到EXTI17,产生定时唤醒或触发中断信号。USB唤醒信号映射到EXTI18,处理USB模块的唤醒事件。19条中断/事件线分布EXTI0~15·GPIO输入对应芯片的GPIO引脚输入,是开发中处理按键、传感器等外部信号的最常用中断源EXTI线16连接到PVD(可编程电压监测器)输出,监测电源电压异常EXTI线17连接到RTC(实时时钟)闹钟事件,用于从停机/待机模式唤醒系统。EXTI线18连接到USB唤醒事件。7.5外部中断/事件与通用GPIO映射

GPIO与EXTI线的映射关系见图7‑2,EXTI0~EXTI15采用同序号GPIO引脚共享一条EXTI线的规则。若某个GPIO引脚序号已经做为外部中断源,则同序号的其它GPIO引脚不能再做为中断源。7.10外部中断/事件相关寄存器及关键位配置基地址为0x40010400寄存器名称偏移地址复位值功能及关键位描述中断屏蔽寄存器:EXTI_IMR0x000x00000000RW:设置EXTIx线是否产生中断请求,x=0~18;D[x]:MRx,对应EXTIx线的中断屏蔽位,1=允许,0=屏蔽;例如:MR0=1,允许EXTI0中断;事件屏蔽寄存器:EXTI_EMR0x040x00000000RW:设置EXTIx线是否产生事件请求,x=0~18;D[x]:MRx,对应EXTIx线的事件请求,1=允许,0=屏蔽;例如:MR0=1,允许EXTI0事件请求;上升沿触发选择寄存器:EXTI_RTSR0x080x00000000RW:设置EXTIx线上升沿触发,x=0~18;D[x]:TRx,对应EXTIx线的上升沿触发,1=允许,0=禁止;例如:TR0=1,允许EXTI0上升沿触发;下降沿触发选择寄存器:EXTI_FTSR0x0C0x00000000RW:设置EXTIx线下降沿触发,x=0~18;D[x]:TRx,对应EXTIx线的下降沿触发,1=允许,0=禁止;例如:TR0=1,允许EXTI0下降沿触发;软件中断事件寄存器:EXTI_SWIER0x100x00000000RW:设置EXTIx线软件中断,x=0~18;D[x]:SWIERx,当该位为0时,写1将设置EXTI_PR中相应的挂起位。如果在EXTI_IMR和EXTI_EMR中允许产生该中断,则产生中断。挂起寄存器:EXTI_PR0x140x00000000RcW1:指示哪个EXTI线产生中断请求,x=0~18;D[18:0]:PRx,1=EXTIx线已触发中断/事件,需写1清除,例如:PR0=10,EXTI10被触发7.6外部中断/事件控制器(EXTI)

(Externalinterrupt/eventcontroller)EXTI定义将MCU片外外设信号和部分片上外设信号安全接入NVIC处理的关键模块是外部中断/事件控制器EXTI。EXTI:是芯片厂商在Cortex-M3内核外围设计的一个外设模块,将GPIO引脚或部分片上外设信号映射到中断线,并提供触发方式选择、事件输出、中断挂起等功能。EXTI独立于内核,负责监测并处理来自芯片引脚或内部外设的中断请求,特点:●触发灵活:支持上升沿、下降沿或双边沿触发方式,可根据应用场景动态配置。●独立管理:每一条中断/事件线均可单独配置屏蔽状态,互不干扰,实现精细化控制EXTI结构6个相关寄存器组成,包括:中断屏蔽寄存器EXTI_IMR事件屏蔽寄存器EXTI_EMR上升沿选择寄存器EXTI_RTSR下降沿选择寄存器EXTI_FTSR软件中断/事件寄存器EXTI_SWIER挂起寄存器EXTI_PR7.6外部中断/事件控制器(EXTI)EXTI的核心逻辑在于将GPIO输入信号进行边沿检测后,依据配置将信号导向不同的处理路径,以实现中断唤醒CPU或硬件事件触发的功能。中断路径(InterruptPath)检测到有效边沿跳变后,经中断屏蔽寄存器(IMR)与挂起寄存器(PR)的逻辑控制,最终向NVIC发送中断请求,以唤醒CPU进行响应处理。2.中断的传输路径7.6外部中断/事件控制器(EXTI)输入信号在经过边沿检测后,兵分两路。一路走向中断路径,最终唤醒CPU;另一路走向事件路径,直接触发其他硬件。可通过配置IMR和EMR寄存器,决定让信号产生中断、产生事件,还是两者都产生事件路径(EventPath)经事件屏蔽寄存器(EMR)控制,直接产生脉冲信号输出。此过程无需CPU介入,常用于直接触发定时器、DMA

等其他片上外设。关键配置寄存器:EXTI_IMR/EMR/RTSR/FTSR/PR3.事件的传输路径7.6外部中断/事件控制器(EXTI)需要产生事件时须先配置并使能事件线。根据事件的边沿信号类型设置2个边沿选择寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求。当事件线上发生了预设的边沿后,产生一个事件请求脉冲7.6外部中断/事件控制器(EXTI)#include"cs32f10x.h"voidEXTI_PA7_Init(void){/*1.开启GPIOA与AFIO时钟*/RCC->APB2ENR|=(1<<2);//IOPAEN:使能GPIOA时钟RCC->APB2ENR|=(1<<0);//AFIOEN:使能AFIO时钟/*2.配置PA7为输入模式(上拉输入)*///PA7在CRL中配置:CNF7=10(上拉/下拉),MODE7=00(输入)GPIOA->CRL&=~(0xF<<(7*4));//清除原配置GPIOA->CRL|=(0x8<<(7*4));//CNF7=10,MODE7=00GPIOA->ODR|=(1<<7);//上拉(ODR=1表示上拉)/*3.配置EXTI7映射到PA7*/AFIO->EXTICR[1]&=~(0xF<<12);//EXTICR2[15:12]对应EXTI7AFIO->EXTICR[1]|=(0x0<<12);//选择PA7(0000)/*4.配置EXTI7*/EXTI->IMR|=(1<<7);//使能中断请求EXTI->EMR&=~(1<<7);//屏蔽事件(只用中断)EXTI->RTSR|=(1<<7);//上升沿触发EXTI->FTSR&=~(1<<7);//禁止下降沿触发/*5.配置NVIC,略*/}CKS32F103使用PA7作为EXTI输入中断源程序代码4.中断初始化程序EXTI不仅能响应硬件信号,用户还可以通过软件来“伪造”一个中断或事件。该功能在调试时非常有用7.7软件中断/事件软件中断/事件:通过软件方式主动触发中断或事件,灵活模拟硬件行为实现方式向软件中断事件寄存器(EXTI_SWIER)的相应位写1该操作会置位挂起寄存器(EXTI_PR)的对应位,效果与检测到实际的硬件电平跳变一致。操作效果向EXTI_SWIER的第x位写1后:•若该EXTI线的EXTI_IMR对应位使能,将产生中断请求。•若该EXTI线的EXTI_EMR

对应位使能,将产生脉冲信号,可触发DMA请求。用途🛠软件调试:无需连接硬件,直接在代码中触发中断,验证中断服务函数逻辑的正确性。🎭任务模拟:在自动化测试或特定逻辑中,模拟按键、传感器等外部硬件事件的发生。⚡强制触发:在复杂软件条件满足时,强制触发关键流程或异常处理操作。相关代码:7.7软件中断/事件EXTI->SWIER|=(1<<0);//触发EXTI0软件中断//使能EXTI0的事件(而非中断)EXTI->EMR|=(1<<0);//软件触发EXTI0事件EXTI->SWIER|=(1<<0);CKS32F103利用NVIC可实现灵活的中断优先级管理。除三个被内核固定的高优先级异常Reset、NMI和

HardFault

不可编程设置外,其余中断的优先级均可配置。CKS32F103使用8位优先级寄存器NVIC_IPR中的高4位配置中断优先级,因此理论上支持16级中断优先级。7.8中断优先级管理但在实际应用中,过多的中断嵌套会导致中断处理时间增加,从而影响系统的实时性和响应速度。此外,嵌套级数还受堆栈空间限制,因为每次中断都需要保护现场的上下文信息。所以实际应用中的中断嵌套级数一般小于10级中断优先级管理:当多个中断同时发生时,CPU的处理顺序。7.8中断优先级管理1抢占优先级(PreemptionPriority)决定了一个中断是否能够打断或“抢占”正在执行的其它中断•规则:高抢占优先级的中断请求,可立即打断当前低抢占优先级中断的执行2.子优先级(Subpriority)•子优先级应用在多个中断的抢占优先级相同的情况下,决定这些中断的执行顺序•规则:CPU将按照“子优先级”的高低顺序,依次响应中断请求。设置中断和复位控制寄存器SCB_AIRCR选择不同的优先级分组,不同分组抢占优先级和子优先级所占位数不同。抢占优先级和子优先级的数值越小,优先级越高3.优先级分组(NVIC_PriorityGroupConfig)标准外设库misc.h和misc.c文件中定义了NVIC的相关中断配置,可直接利用NVIC的优先级分组函数,设置抢占优先级和子优先级的位数7.8中断优先级管理文件中定义了结构体和5个相关函数voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup);voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct);voidNVIC_SetVectorTable(uint32_tNVIC_VectTab,uint32_tOffset);VoidNVIC_SystemLPConfig(uint8_tLowPowerMode,FunctionalStateNewState);voidSysTick_CLKSourceConfig(uint32_tSysTick_CLKSource);分组管理函数voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup)设置中断的优先级分组7.8中断优先级管理优先级分组、抢占优先级和子优先级的取值范围表NVIC_PriorityGroup抢占优先级取值范围子优先级取值范围描述可配置的优先级NVIC_PriorityGroup_000-15抢占优先级占0位,子优先级占4位0个抢占优先级,16个子优先级NVIC_PriorityGroup_10-10-7抢占优先级占1位,子优先级占3位2个抢占优先级,8个子优先级NVIC_PriorityGroup_20-30-3抢占优先级占2位,子优先级占2位4个抢占优先级,4个子优先级NVIC_PriorityGroup_30-70-1抢占优先级占3位,子优先级占1位8个抢占优先级,2个子优先级NVIC_PriorityGroup_40-150抢占优先级占4位,子优先级占0位16个抢占优先级,0个子优先级7.8中断优先级管理例如:RTC中断、外部中断0和外部中断1的抢占优先级分别为2、3和2,子优先级分别为1、0、0,中断

IRQn抢占优先级子优先级优先级顺序RTC中断121外部中断1>RTC>外部中断0外部中断0630外部中断1720#include"cs32f10x.h"voidNVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;//配置中断分组,这里使用分组2,即2位抢占优先级,2位子优先级NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//配置RTC中断NVIC_InitStructure.NVIC_IRQChannel=RTC_IRQn;//配置中断源,IRQ通道优先级配置程序7.8中断优先级管理NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//配置抢占优先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//配置抢子优先级

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;;//使能中断通道

NVIC_Init(&NVIC_InitStructure);//配置外部中断0

NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);//配置外部中断1

NVIC_InitStructure.NVIC_IRQChannel=EXTI1_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);}7.9外部中断/事件编程实例7.9.1中断编程步骤中断初始化中断初始化包括对时钟、引脚输入方式、中断源、中断优先级、中断触发条件等的配置,以及开启相应的中断使能位。使能GPIO和AFIO的时钟由于使用GPIO引脚作为外部中断输入,首先要使能相应GPIO端口的时钟,由于GPIO需通过AFIO复用功能映射中断线,所以还需使能AFIO时钟。2)配置GPIO引脚模式将对应的GPIO引脚设置为输入模式,一般选择上拉或下拉输入,保证无外部信号时引脚处于稳定电平,具体可由外部电路特性决定。3)配置EXTI外部中断线映射通过AFIO_EXTICRx寄存器,将对应的GPIO引脚映射到指定的EXTI0~EXTI15中断线,实现外部中断与相应的GPIO引脚关联。配置EXTI寄存器主要设置外部中断的触发方式如上升沿、下降沿或双边沿触发,并且使能相应的中断线。如需产生事件则使能事件屏蔽寄存器EXTI_EMR的相应位,EXTI_RTSR配置上升沿响应,EXTI_FTSR配置下降沿响应,EXTI_IMR使能对应EXTI线的中断。配置NVIC嵌套向量中断控制器在NVIC中使能对应的EXTI中断通道,并且设置中断优先级。7.9外部中断/事件编程实例7.9.1中断编程步骤中断初始化4)配置EXTI寄存器主要设置外部中断的触发方式如上升沿、下降沿或双边沿触发,并且使能相应的中断线。如需产生事件则使能事件屏蔽寄存器EXTI_EMR的相应位,EXTI_RTSR配置上升沿响应,EXTI_FTSR配置下降沿响应,EXTI_IMR使能对应EXTI线的中断。5)配置NVIC嵌套向量中断控制器在NVIC中使能对应的EXTI中断通道,并且设置中断优先级。2.编写中断服务程序中断服务程序需要保存一些可能被更改的数据并实现中断事件的处理,处理完中断事件后需清除挂起寄存器EXTI_PR的对应位并恢复现场,然后退出ISR7.9外部中断/事件编程实例7.9.2按键中断编程实例编写外部按键的中断程序。按键一端接3.3V,另一端连接PA0并通过下拉电阻接地,保证未按下时为低电平,按键按下后在PA0引脚产生一个上升沿,引发一次中断。代码如下:#include"cs32f10x.h"//外部按键中断初始化voidEXTI0_Init(void){GPIO_InitTypeDefGPIO_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;//使能GPIOA和AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//配置PA0为浮空输入,外部连接了电阻GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);7.9外部中断/事件编程实例7.9.2按键中断编程实例//将PA0映射到EXTI0

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//配置EXTI0

EXTI_InitStructure.EXTI_Line=EXTI_Line0;

EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;

EXTI_InitStructure.EXTI_LineCmd=ENABLE;

EXTI_Init(&EXTI_InitStructure);//配置NVIC

NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);}7.9外部中断/事件编程实例7.9.2按键中断编程实例//外部中断0服务函数voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET){//中断处理代码

EXTI_ClearITPendingBit(EXTI_Line0);}}intmain(void){EXTI0_Init();while(1){//主循环代码}}EXTI0_IRQHandler()为外部中断0的中断服务函数,当PA0引脚出现上升沿时会触发该函数。在中断服务程序里,先检查中断标志位,处理中断事件,最后清除中断标志位。第7章作业理解中断、中断源、中断嵌套、中断优先级的概念。请写出中断处理的过程。请写出中断服务程序的功能和特点。请写出中断和事件的特点及应用场合。熟悉CKS32F103中断的特点,与Cortex-M3内核的关系。什么是异常向量表?请写出异常向量表的功能。熟悉EXTI控制器的结构和中断/事件的工作过程。请写出EXTI控制器的功能,CKS32F103共有多少条EXTI线,哪些可用于GPIO引脚的中断?为什么要实现GPIO引脚与EXTI线的映射。什么是软件中断/事件?有什么特点?如何实现?第7章作业11.请写出中断优先级的功能,抢占优先级与子优先级各有什么特点。12.RTC中断、外部中断0和外部中断1的抢占优先级分别为1,2,3,子优先级分别为2,3,0,请写出这三个中断的优先级顺序。13.请编写程序,将PA0~PA15映射到EXTI0~EXTI15线。14.根据7.9节例程,画出按键和LED与CKS32F103GPIO引脚连接的电路图并说明工作原理。15.读懂7.9节程序,将PA0换成PB0,PC13换成PD0,请改写和调试7.9.2~7.9.5节的程序。感谢观看CKS32F103微控制器教学课件08USART串行通信什么是串行通信?串行通信(SerialCommunication)是一种将数据按位(bit)顺序在一条信号线上进行传输的通信方式,它与并行通信是数据传输的两种基本方式。并行通信(Parallel)•原理:每一位数据通过独立线路同时传输,如8位数据需8条数据线。•优势:传输速度极快,适合近距离高速场景。•劣势:占用大量引脚,成本高,信号干扰强,不适合长距离串行通信(Serial)•原理:所有数据位依次通过同一条线路传输,无需多线并行•优势:占用引脚极少(2-3根),成本低,抗干扰强,支持长距离传输。•劣势:单位时间传输数据量少于并行通信。串行通信8.1.1传输信道及数据帧格式8.1串行通信相关概念1.传输信道信道指发送端与接收端之间用于信息传递的物理媒介或逻辑路径串行通信的传输信道可以分为单工、半双工及全双工三种单工:单工通信指数据只能单方向传输,因此只占用一个信道。如广播等半双工:半双工通信指通信双方可双向传输但不能同时进行,即双方在一条信道上交替进行数据传输。全双工:全双工通信指通信双方可同时进行数据收发的工作方式。一般情况下全双工的通信信道必须是双向信道。8.1.1传输信道及数据帧格式8.1串行通信相关概念2.数据帧格式数据帧:是数据组织与传输的基本单位。通常包含以下基本要素:帧头:标识数据帧的开始,可能包含同步字符、地址信息等。数据字段:实际要传输的有效数据,如传感器读数、控制指令等。控制字段:包含协议相关的控制信息,如帧类型、优先级等。校验字段:用于检测数据是否发生传输错误,如CRC校验、奇偶校验等。帧尾:标识数据帧的结束,可能包含结束字符或校验码。数据解析:指接收方根据预设的规则或协议,将接收到的原始数据转换为可理解、可应用的信息的过程。8.1.2同步通信和异步通信8.1串行通信相关概念1.同步通信(Synchronous)✦核心特点:需要专门的时钟信号线(CLK)来同步收发双方的操作。时钟由主设备提供,从设备跟随采样,传输速率快、效率高。✦传输原理:无需起始位和停止位,数据连续成块传输。在时钟信号的上升沿或下降沿触发采样,将多位数据同步传输,抗干扰能力更强。✦典型代表:SPI、I2C2.异步通信(Asynchronous)✦核心特点:无需时钟线进行同步,通信双方需提前约定相同的波特率。硬件连接简单,适合长距离、低速率场景。✦传输原理:数据以“帧”为单位进行封装传输。每一帧包含:起始位(1位)、数据位(5-8位)、校验位(可选)、停止位(1-2位)。依靠起始/停止位标识数据边界。✦典型代表:UART、USART|常见串行通信接口对比UART通信方式:异步通信(无时钟线)信号引脚:TX(发送),RX(接收)通信特性:全双工,点对点连接典型应用:MCU与PC调试、GPS模块SPI通信方式:同步通信(SCK时钟线)信号引脚:MOSI(主出),MISO(主入)通信特性:高速全双工,一主多从典型应用:Flash存储、高速ADC、LCDI2C(IIC)通信方式:同步通信(SCL时钟线)信号引脚:SDA(双向数据线,仅需两线)通信特性:半双工,一主多从,地址寻址典型应用:EEPROM、温湿度传感器、RTC8.1串行通信相关概念8.1.2同步通信和异步通信8.1.1传输信道及数据帧格式8.1串行通信相关概念UART:UniversalAsynchronousReceiver/Transmitter通用异步收发器

USART:UniversalSynchronous/AsynchronousReceiver/Transmitter通用同步/异步收发器

UART只能异步通信;USART既能异步(兼容UART),又能同步通信,USART是UART的升级版8.1.2同步通信和异步通信8.1串行通信相关概念2.异步通信(Asynchronous)波特率:表示单位时间内传输的信号码元数量。串行通信中信道上传输的每一位信号必须保持固定的持续时间,以便接收端能及时采样。这个持续时间由波特率决定,因此波特率实际上定义了发送方与接收方的数据采样节奏嵌入式系统中最常用波特率:115200bps实际应用中需要综合考虑传输介质、距离、数据量以及抗干扰要求等,以便选择合适的波特率8.1.2同步通信和异步通信8.1串行通信相关概念2.异步通信(Asynchronous)2)异步通信:UART

帧结构异步通信的数据以“帧(Frame)”为基本单位进行传输,每一帧信号包含以下五个核心部分:01.空闲位(Idle):数据线保持高电平,代表当前无数据传输。02.起始位(Start):发送一个低电平位,作为一帧数据传输的起始标志。03.数据位(Data):承载实际需要传输的信息,通常为5~8位。04.校验位(Parity):通过奇/偶校验实现简单的传输错误检测,可选。05.停止位(Stop):1~2个高电平位,标志一帧数据传输的结束。8.1.2同步通信和异步通信8.1串行通信相关概念2.异步通信(Asynchronous)2)异步通信:UART

帧结构UART帧结构时序波形💡同步逻辑:接收方通过检测“起始位”的下降沿来实现时钟同步,并依据约定的波特率来精确采样后续数据。8.1.2同步通信和异步通信8.1串行通信相关概念2.异步通信(Asynchronous)2)异步通信:UART

帧结构UART帧结构时序波形💡同步逻辑:接收方通过检测“起始位”的下降沿来实现时钟同步,并依据约定的波特率来精确采样后续数据8.1.3RS232C的物理接口及电气特性物理接口:RS232C标准9芯引脚连接器编号名称引脚描述1DCD接收线路信号检测,输入。是数据通信设备DCE送给DTE的线路载波检测线2RXD接收数据,输入3TXD发送数据,输出4DTR数据终端准备就绪,输出。如果该线处于接通状态,DTE通知DCE,DTE已经作好了发送或接收数据的准备5GND地6DSR数据通信设备准备就绪,输入。反映本端数据通信设备当前的状态7RTS请求发送,输出。DTE向DCE提出发送要求的请求线8CTS准许发送,输入。DCE对DTE提出的发送请求作出的响应信号9RI振铃检测,输入。当DCE检测到线路上有振铃信号时,将RI线接通传给DTE,在DTE中常作为中断请求信号8.1.3RS232C的物理接口及电气特性2.电气性能规定TXD和RXD线RS232C的TXD和RXD线采用负逻辑,与TTL/CMOS电平不兼容,需转换。逻辑1:-3V~-15V,通常为-12V;逻辑0:+3V~+15V,通常为+12V2)联络控制信号线联络控制信号线如RTS、CTS、DSR、DTR、RI、DCD等采用正逻辑,即:ON(接通状态)=+3V~+15V;OFF(断开状态)=-3V~-15V8.1.3RS232C的物理接口及电气特性3.传输距离理论上波特率为19200bps时的传输距离约15m。实际应用中受到波特率、线缆质量等因素的影响,降低波特率可以增加传输距离。4.典型应用与注意事项RS232C总线仅支持点对点通信,只能在两台设备之间建立连接要考虑电平匹配、接地、波特率、线缆长度和信号干扰问题。与TTL/CMOS设备通信时必须使用电平转换芯片,避免直接连接;确保通信双方共地,否则可能导致无法通信或损坏设备;发送端和接收端波特率必须严格一致;长距离传输时需降低波特率或改用RS422/RS485等更适合的标准RS232C抗干扰能力较弱,不适用于强电磁干扰环境。8.1.4RS485的物理接口及电气特性1.物理接口和电气性能RS485标准的物理接口最少只需A、B两条信号线,通过差分方式传输信号。发送端差分电压范围:

逻辑1:+1.5V~+6V逻辑0:-1.5V~-6V接收端的判定条件:逻辑1:VA-B≥+200mV逻辑0:VA-B≤-200mVRS485传输的最大驱动电流为±150mA,建议使用特性阻抗为120Ω的屏蔽双绞线,线缆电容应≤50pF/m,以减少信号衰减一般在总线的两个物理端点各接入一个120Ω的终端电阻8.1.4RS485的物理接口及电气特性2.传输距离理论最大传输距离达1200m,但实际受波特率和线缆质量等影响。9600bps和115200bps时的传输距离大约为1200m和100m。3.RS485与RS232C等标准的对比标准电平特性传输距离最大波特率接口形式RS232C±3~±15V(负逻辑)15米20kbpsDB-9/三线RS422差分信号1200米10Mbps4线(全双工)RS485差分信号1200米10Mbps2线(半双工)TTL/CMOS0~5V/3.3V几米数十Mbps直接连接8.1.4RS485的物理接口及电气特性4.典型应用与注意事项RS485总线支持多点通信,总线上可连接的终端数量取决于总线的电气特性和通信协议,在标准负载条件下通常支持32个节点。在应用中,通过协议中的地址区分不同的终端全双工与双模通信•全双工:支持TX/RX同时收发,数据吞吐无阻塞。•双模支持:兼容标准异步UART协议,也支持同步时钟通信模式灵活可配置帧格式•数据位:支持8位或9位数据宽度。•停止/校验:1/1.5/2位停止位,奇/偶/无校验位自由组合宽范围精确波特率支持从几十bps到数Mbps的宽范围波特率配置,可满足低速控制指令或高速数据传输等多样化应用场景需求。丰富的中断与DMA支持•多级中断:支持发送完成、发送寄存器空、接收非空及多种通信错误中断,便于实时处理•DMA传输:支持发送/接收的DMA高速数据搬运,极大减轻CPU的负荷,提升系统整体运行效率。多场景高级功能扩展•硬件流控:支持CTS/RTS硬件流控,防止数据溢出•多协议兼容:支持LIN总线主/从模式及IrDA®红外通信编码/解码,拓展工业与消费类设备的连接能力8.2.CKS32F103的USART接口特性和结构8.2.CKS32F103的USART接口特性和结构类别特点说明通道数量USART1、USART2、USART3,部分型号带2个工作模式全双工、半双工、多机通信模式同步/异步支持异步通信和同步通信,发送方为同步传输提供时钟数据位长度可选8位或9位数据帧校验位支持奇校验、偶校验或无校验。停止位可选1、0.5、2或1.5个停止位。波特率范围在72MHz主频下,高达4.5Mbit/s。硬件流控USART1、USART2支持CTS/RTS硬件流控。DMA支持发送和接收均支持DMA方式。多机通信可使用地址帧识别,实现总线型通信(9位模式)。红外通信内置IrDASIR串行红外通信模式。LIN总线支持LIN2.0协议,硬件生成同步断点。智能卡模式内置ISO7816-3标准的智能卡接口支持。时钟输出同步模式下可从CK引脚输出时钟信号。中断源接收缓冲非空RXNE,发送缓冲空TXE,发送完成TC,IDLE检测,LIN、CTS、错误中断(溢出、帧错误、噪声)低功耗特性在停止/待机模式下可通过接收数据唤醒MCU。8.2.1USART特性USART相应特性和引脚分配接口总线挂载最高波特率模式TX引脚RX引脚RTS引脚CTS引脚SCLK引脚USART1APB2(72MHz)4.5Mbps高速同步/异步PA9PA10PA12PA11PA8USART2APB1(36MHz)2.25Mbps中速同步/异步PA2PA3PA1PA0PA4USART3APB1(36MHz)2.25Mbps中速同步/异步PB10PB11PB14PB13PB12USART实现双向通信至少需要TX和RX两个引脚。RX引脚接收串行数据,TX引脚发送串行数据。8.2.1USART特性8.2.CKS32F103的USART接口特性和结构USART相应特性和引脚分配接口总线挂载最高波特率模式TX引脚RX引脚RTS引脚CTS引脚SCLK引脚USART1APB2(72MHz)4.5Mbps高速同步/异步PA9PA10PA12PA11PA8USART2APB1(36MHz)2.25Mbps中速同步/异步PA2PA3PA1PA0PA4USART3APB1(36MHz)2.25Mbps中速同步/异步PB10PB11PB14PB13PB12USART实现双向通信至少需要TX和RX两个引脚。RX引脚接收串行数据,TX引脚发送串行数据。8.2.1USART特性8.2.CKS32F103的USART接口特性和结构▌数据发送流程(Transmission)CPU将并行数据写入数据寄存器(DR),硬件自动将数据转移至移位寄存器,完成串并转换后逐位从TX引脚发送。发送完成后,状态寄存器中的发送完成标志位(TC)置1,指示本次发送结束。▌数据接收流程(Reception)接收器从RX引脚接收串行信号,完成并串转换与解码,将恢复的并行数据存入数据寄存器(DR)。接收完成后,状态寄存器中的“接收非空”标志位(RXNE)置1,向CPU发出中断或轮询请求,通知读取数据。8.2.2USART结构8.2.CKS32F103的USART接口特性和结构包括波特率发生器、收发控制单元、移位寄存器、数据寄存器、中断控制单元、硬件流控制模块和IrDA模块8.5.USART相关寄存器及关键位配置名称偏移地址复位值功能及关键位供述USART状态寄存器:USART_SR0x000x000000C0R:指示USART的当前状态,如发送完成、接收缓冲区非空等D0:PE,奇偶校验错误,1=错误,0=正确;D1:FE,帧错误;D2:NE,噪声错误;D3:ORE,过载错误;D4:IDLE,监测总线空闲,1=检测到总线空闲,0=未检测到总线空闲;D5:RXNE,接收数据寄存器非空,1=接收数据,可读,0=空;D6:TC,发送完成,1=一帧数据完全发送,0=未完成(需手动清0:写CR1的TCIE=1后中断清除;D7:TXE,发送数据寄存器空,1=数据已发送到移位寄存器,可写新数据),0=DR非空;

USART数据寄存器:USART_DR0x04不确定R/W:存储发送和接收的数据,包含一个9位数据缓冲区。DR[8:0]:数据值,发送时写入要发送的数据,接收时读取接收到的数据,读写共用,自动区分;USART波特率寄存器:USART_BRR0x080x00000000RW:配置USART的通信波特率,通过分频系统时钟实现;D[15:4]:DIV_Mantissa[11:0],USARTDIV的整数部分;D[3:0]:DIV_Fraction[3:0],USARTDIV的小数部分;每个USART外设均包含一组同样功能的寄存器,通过各自的基地址区分。如USART1的基地址为0x40013800,而USART2的基地址0x40004400,所以其波特率寄存器地址分别为0x40013800+0x08和0x0x40004400+0x088.5.USART相关寄存器及关键位配置USART控制寄存器1:USART_CR10x0C0x00000000RW:配置USART的基本功能,如使能、字长、奇偶校验等;D2:RE,接收使能,1=允许接收(需先置UE=1),0=禁止接收;D3:TE 发送使能,1=允许发送(需先置UE=1),0=禁止发送;D5:RXNEIE,接收非空中断使能,1=ORE或RXNE为1时产生USART中断;D7:TXEIE,发送缓冲区空中断使能,1=TXE标志置位时触发中断;D9:PS,校验选择:1=奇校验,0=偶校验(仅PCE=1时有效)D10:PCE,校验位使能,1=使能校验,0=无校验;D12:M,字长选择:1=9位数据(含校验),0=8位数据;D13:UE,USART使能,1=使能串口,0=关闭;USART控制寄存器2:USART_CR20x100x00000000RW:配置USART的高级功能,如停止位、时钟同步等;D[13:12]:STOP[1:0],

停止位选择,00=1,01=0.5,10=2,11=1.5个停止位;USART控制寄存器3:USART_CR30x140x00000000RW:USART的额外功能,如DMA、硬件流控制、红外和智能卡模式等;D6:DMAR,DMA使能接收,1=使能接收时的DMA模式,0=禁止;D7:DMAT,DMA使能发送,1=使能发送时的DMA模式,0=禁止;USART_GTPR0x180x00000000RW:USART保护时间和预分频器寄存器,用于IrDA模式或智能卡模式的时序配置8.3.USART串口通信的实现环节实现USART通信主要过程:设置波特率、数据位、停止位、校验位等基本参数开启USART外设并根据需要使能发送或接收功能在数据传输阶段,发送端将数据写入USART_DR则启动发送接收端则通过读取USART_DR的数据完成接收。可通过查询标志位或中断机制来判断发送和接收状态,并进行相应处理。通信任务完成后,可根据需求关闭USART外设或进入低功耗模式8.3.1波特率计算和配置8.3.USART串口通信的实现环节CKS32F103采用分数波特率发生器,波特率由系统时钟和分频值共同决定波特率=fPCLK/(16×USARTDIV)则USARTDIV=fPCLK/(16×波特率)fPCLK为USART外设的时钟频率,即挂载APB总线的时钟频率USARTDIV为波特率分频值,需拆分为整数和小数部分写入波特率寄存器USART_BRRUSART_BRR由12位整数DIV_Mantissa和4位小数

DIV_Fraction

组成。DIV_Mantissa

直接取USARTDIV的整数部分,无需四舍五入,仅截断整数。8.3.1波特率计算和配置8.3.USART串口通信的实现环节DIV_Fraction

将USARTDIV的小数部分乘以16取整。若小数部分乘以16后≥0.5,则向上取整以提升精度。当小数部分乘以16后≥16时,4位小数DIV_Fraction溢出,需要将进位加到整数部分将波特率分频值写入USART_BRR后,硬件会自动更新波特率计数器,生成发送和接收的时钟信号。通信过程中不能修改USART_BRR,否则可能导致数据传输错误。发送端和接收端的波特率必须一致,即USARTDIV的整数部分和小数部分设置值应完全相同8.3.USART串口通信的实现环节例:当fPCLK=72MHz,USART1配置为115200bps时,则波特率分频值USARTDIV=72,000,000/(16×115,200)≈39.0625

USART_BRR的整数部分为DIV_Mantissa=39=0x27小数部分DIV_Fraction=0.0625×16=0x01

USART_BRR=0x2718.3.1波特率计算和配置若计算出USARTDIV=50.99,整数部分为50,小数部分DIV_Fraction=16*0.99=15.84,最接近的整数是16=>DIV_Fraction[3:0]有溢出,应向整数部分进位。则DIV_Mantissa=51=0x33,USART_BRR=0x330,对应的实际波特率为72,000,000/(16×51)=88235.3bps,与目标波特率88,235.6bps之间存在微小误差,但在容许范围8.3.2帧结构配置8.3.USART串口通信的实现环节USART的帧结构中起始位固定为1位逻辑0,不需要编程设置,数据字长度、校验位、停止位可通过寄存器配置USART控制寄存器1:USART_CR1RW:配置USART的基本功能,如使能、字长、奇偶校验等;D2:RE,接收使能,1=允许接收(需先置UE=1),0=禁止接收;D3:TE 发送使能,1=允许发送(需先置UE=1),0=禁止发送;D5:RXNEIE,接收非空中断使能,1=ORE或RXNE为1时产生USART中断;D7:TXEIE,发送缓冲区空中断使能,1=TXE标志置位时触发中断;D9:PS,校验选择:1=奇校验,0=偶校验(仅PCE=1时有效)D10:PCE,校验位使能,1=使能校验,0=无校验;D12:M,字长选择:1=9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论