1.空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break中断)。
2.关于第二点有要铺垫的三个情况,datasheet中"当一空闲帧被检测到时,其处理步骤和接收到普通数据帧一样,但如果IDLEIE位被设置将产生一个中断""空闲符号被视为完全由'1'组成的一个完整的数据帧,后面跟着包含了数据的下一帧的开始位'1'的位数也包括了停止位的位数” 空闲符号的配图后面跟这一个低电平.
有人理解为只有收到下一个数据的起始位才会触发中断,这样理解是不对的,应该是数据后有空闲了一帧就会触发.
3.清中断的方式感觉奇怪,使用函数USART_ClearITPendingBit( USART1, USART_IT_IDLE )清除不了中断的.我用的是3.5的库,查看函数说明,里面的@param参数并没有IDLE,后面的@note中,这样说:"PE(Parity error),FE(Framing error),NE(Noise error),ORE(OverRun error) and IDLE(Idle line detected) pending bits are cleared by software sequence: a read operation to USART_SR register (USART_GetITStatus()) followed by a read operation to USART_DR register (USART_ReceiveData())."
我是通过语句"USART1->DR;"来清除IDLE中断的.
关键字:STM32 串口空闲 中断
引用地址:
关于STM32串口空闲中断的问题
推荐阅读最新更新时间:2024-03-16 16:24
STM32的BOOT(模式)
stm32f10x的片上存储区有3个部分:内置flash,内置sram,内置rom(system memory),这就决定了系统的启动方式有3种:从内置flash启动,从内置sram启动,从system memory启动,这三种启动方式是通过BOOT 这个两个脚来决定的。 在系统上电的时候,cpu首先根据这两个脚来确定是哪种模式的启动,然后就是把相应模式的起始地址映射到0地址处,并从0地址处开始执行。 在芯片出厂时,st烧写了一个bootloader到rom中,也就是system memory。这个bootloader的主要任务就是通过uart1下载程序到内置flash中去。工作流程如下: system memory
[单片机]
STM32将PA13/PA14/PA15当做普通的IO口使用
在STM32要使用JTMS(PA13)、 JTCK(PA14)作为普通I/O口的时候,要在初始化前添加如下代码(顺序不能颠倒): RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 以下两句二选一: 使用GPIO_Remap_SWJ_Disable就不能使用SWD下载功能,需要再次下载的时候只能讲BO和B1全部拉低,或者使用串口下载;使用GPIO_Remap_SWJ_JTAGDisable可以使用SWD功能 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE); //Full SWJ Disabled (JTAG-DP +
[单片机]
STM32自学笔记(1.什么是STM32)
STM32微控制器的核心: Cortex-M3处理器。 嵌套中断向量控制器(NVIC)是Cortex-M3处理器中一个比较关键的组件。提供了标准的中断架构和优秀的中断响应能力,为超过240个终端源提供专门的中断入口,并可以赋予每个中断源单独的优先级。 Cortex-M3的CPU支持两种运行模式: 线程模式和处理模式(都拥有自己独立的堆栈)。 Cortex-M3还包括一个24位的可自动重装载定时器,可以为实现内核(RTOS)提供一个周期性中断。 Cortex-M3支持新型的ARM Thumb-2指令集。 STM32具有精密性、可靠性和安全性 可靠性 有两个看门狗定时器。 第一个叫窗口看门狗,窗口看门狗必
[单片机]
以STM32为例,介绍单片机中的BOR/POR/PDR
STM32内部自带了一个可编程电压检测器(PVD),对VDD的电压进行监控可以通过电源控制寄存器PLS 位来设置监控电压的阀值,这样通过与VDD电压比较达到了监控电压的目的。 电源控制状态寄存器(PWR_CSR)中的PVDO用来表明VDD是高于还是低于PVD的电压阀值。当VDD下降到PVD阀值以下或VDD上升到PVD阀值之上时,通过外部中断16线上升或下降边沿触发设置,产生PVD中断。在中断处理函数中做相应的保护措施。 具体由以下图片和表格所示。 图1:阀值与PVD输出关系 表:具体寄存器参数 下面对上面的图片和表格中的数据做一个简要的解释: (1) PVD = Programmable Votage Detec
[单片机]
STM32中 一些类型的别名
typedef signed char int8_t; typedef signed short int int16_t; typedef signed int int32_t; typedef signed __INT64 int64_t; /* exact-width unsigned integer types */ typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef int uint32_t; typedef unsigned __INT64 uint64_t;
[单片机]
STM32学习笔记(5) 串口通讯-接收与发送
一 通信的基本概念 串口并行与串行 数电课讲过,并行速度快但占用的门电路多,耗费空间 串行速度慢但节约空间 数据通信方向 全双工:TX,RX同时收发数据 半双工:不能同时收发数据,可分时收发数据 单工:任何时刻都只能往某一个固定的方向传输数据 数据同步方式 同步 异步 通信速率 比特率:每秒钟传输的二进制位数,单位(bit/s) 波特率:每秒中传输的码元个数 一个码元就是一个脉冲信号,一个脉冲信号有可能携带1bit数据,也有可能携带2bit数据、4bit数据!你发送一个脉冲信号,如果就可以携带4bit数据,肯定发送速率更快啊! 那么怎么实现一个脉冲信号就能携带多个bit数据呢?就需要一定
[单片机]
正点原子 第6讲 STM32芯片解读
1.芯片的资源 选型手册可以看到 芯片的资源 Flash size 是 片上flash的大小 这样一直对应 下去。都可以在 选型手册中来查找 比如他们的内核都是用的 cortex m3内核 一般情况下外部晶振用8M DMA用于高速的数据传输 系统定时器 通常用于ucos的延时 APB2 一般挂载高速外设 APB1挂载低速外设 芯片的引脚与功能是怎么定义的 我们可以在数据手册中找到 引脚对应的功能。 端口的功能会在后面进行介绍。 标注FT的引脚代表容忍5V VDD 连到 3.3V VBAT接电源 VDDA 也是接到3.3V VDD 和 VSS就是数字
[单片机]
STM32基础知识:中断系统
中断系统 1 数据传输方式 无条件传输 :处理器不必了解外部设备状态,直接进行数据传输,用于指示灯和按键等简单设备.。 查询方式 :传输前,一方先查询另一方的状态,若已经准备好就传输,否则就继续查询。 中断方式 :一方通过申请中断的方式与另一方进行数据传输,收发双方可以并行工作。 直接存储器访问 :处理器内部建立片内外设和内存之间的数据传输通道,传输过程不需要处理器参与。 2 中断系统的基本概念 2.1 中断全过程 中断发生: 当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。 中断处理: CPU暂停当前的工作,转去处理事件B。 中断返回: 当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继
[单片机]