你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f334串口中断接收

[复制链接]
LTLT 发布时间:2026-1-13 20:26

寄存器

USART control register 1 (USART_CR1)

  • bit 28 M1 字长

    • 该位和第 12 位(M0)为单位,决定字长。它是由软件设置或清除的
    • M[1:0] = 00:1 个起始位,8 个数据位,n 个停止位
    • M[1:0] = 01:1 个起始位,9 个数据位,n 个停止位
    • M[1:0] = 10:1 个起始位,7 个数据位,n 个停止位
    • 该位仅在 USART被禁用(UE=0)时写入
  • bit 27 EOBIE:块中断结束启用

  • bit 26 RTOIE:接收机超时中断启用

  • bit 25-21 DEAT[4:0]:驱动 启用断言时间

  • bit 20-16 DEDT[4:0]:驱动程序启用取消断言时间

  • bit 15 OVER8:过采样模式

    • 0:16 次过采样
    • 1:8 次超采样
  • bit 14 CMIE:字符匹配中断启用

  • bit 13 MME:静音模式启用

    • 0:接收机永久处于主动模式
    • 1:接收机可在静音模式和主动模式之间切换
  • bit 12 M0 位:字长

  • bit 11 唤醒:接收机唤醒方法

    • 0:空闲行
    • 1:地址
  • bit 10 PCE:奇偶校验控制启用

  • bit 9 PS:奇偶校验选择

  • bit 8 PEIE:PE 中断启用

  • bit 7 TXEIE:中断启用

  • bit 6 TCIE:传输完成中断启用 该位由软件设置并清除

  • bit 5 RXNEIE:RXNE 中断启用

  • bit 4 IDLEIE:IDLE 中断启用

  • bit 3 TE:发射机启用

  • bit 2 RE:接收机启用

  • bit 1 UESM:停止模式下启用 USART

    • 0:USART 无法从停止模式唤醒 MCU
  • bit 0 UE :使能 USART

USART control register 2 (USART_CR2)

  • bit 31-28 ADD[7:4]: Address of the USART node

  • bit 27-24 ADD[3:0]: Address of the USART node

  • bit 23 RTOEN:接收机超时启用

  • bit 22-21 ABRMOD[1:0]:自动波特率模式

  • bit 15 SWAP: Swap TX/RX pins 交换 TX/RX 引脚

  • bit 14 LIN 模式启用

  • bit 13-12 STOP[1:0]: STOP bits

    • 00: 1 stop bit
    • 01: 0.5 stop bit
    • 10: 2 stop bits
    • 11: 1.5 stop bits
  • bit 11 CLKEN:时钟启用

  • bit 10 CPOL:时钟极性

  • bit 9 CPHA:时钟相位

  • bit 8 LBCL:最后一位时钟脉冲

  • bit 6 LBDIE:LIN 断开检测中断启用

  • bit 5 LBDL:LIN 断裂检测长度

  • bit 4 ADDM7:7 位地址检测/4 位地址检测

USART control register 3 (USART_CR3)

  • bit 22 WUFIE:从停止模式唤醒中断启用 该位由软件设置并清除

    • 0:中断被抑制
    • 1:当 USART_ISR 寄存器中 WUF=1 时,生成 USART 中断
  • bit 21:20 WUS[1:0]:从停止模式中断标志选择唤醒

    • 00:地址匹配时 WUF 激活(由ADD[7:0]和 ADDM7 定义)
    • 10:开始比特检测时 WuF 激活
    • 11:RXNE 上 WUF 激活
  • bit 19-17 SCARCNT[2:0]:智能卡自动重试计数

  • bit 15 DEP:驱动启用极性选择

  • bit 14 DEM:驱动启用模式

  • bit 13 DDRE:接收错误时禁用 DMA

  • bit 12 OVRDIS:溢出 禁用

  • bit 11 ONEBIT:单样本位方法启用

    • 0:三采样位方法
    • 1:采样位方法
  • bit 10 CTSIE:启用 CTS 中断

  • bit 9 CTSE:CTS 启用 硬件控制流 输入

  • bit 8 RTSE:RTS 启用 硬件控制流

  • bit 7 DMAT:DMA 启用发射机

  • bit 6 DMAR:DMA 启用接收机

  • bit 5 SCEN:智能卡模式启用

  • bit 4 NACK:智能卡 NACK 启用

  • bit 3 HDSEL:半双工选择

  • bit 2 IRLP:IrDA 低功耗

  • bit 1 IREN:启用 IrDA 模式

  • bit 0 EIE:错误中断启用

USART baud rate register (USART_BRR) 波特率

  • bit 15-4 BRR

    • BRR[15:4] = USARTDIV[15:4]
  • bit 3-0 BRR

    • 当 OVER8 = 0 时,BRR[3:0] = USARTDIV[3:0]
    • 当OVER8 = 1 时:BRR[2:0] = USARTDIV[3:0] 向右移动1 位
    • BRR[3]必须保持清空。

USART guard time and prescaler register (USART_GTPR)

  • bit 15-8 GT[7:0]:守护时间值 智能卡模式
  • bit 7:0 PSC[7:0]:预分频器值

USART receiver timeout register (USART_RTOR) 超时寄存器

  • bit 31-24 BLEN[7:0]:块长度
  • bit 23:0 RTO[23:0]:接收端超时值

USART request register (USART_RQR) 请求寄存器

  • bit 4 TXFRQ:传输数据刷新请求

    • 写入 1 到该比特时,触发 TXE 标志
    • 这使得可以丢弃传输数据,该位仅在智能卡模式下使用
  • bit 3 RXFRQ:接收数据冲洗请求 //__HAL_UART_FLUSH_DRREGISTER

  • bit 2 MMRQ:静音模式请求

  • bit 1 SBKRQ:发送断裂请求

  • bit 0 ABRRQ:自动波特率请求

USART interrupt and status register (USART_ISR)中断和状态寄存器

  • bit 22 REACK:接收 启用确认标志
  • bit 21 TEACK:发送 启用确认标志
  • bit 20 WUF:从停止模式标志唤醒
  • bit 19 RWU:接收机从静音模式唤醒
  • bit 18 SBKF:发送中断标志
  • bit 17 CMF:字符匹配标志
  • bit 15 BUSY: Busy flag
  • bit 14 ABRF:自动波特率标志
  • bit 12 EOBF:块标志结束 如果不支持智能卡模式,该位被保留并保持在复位值
  • bit 11 RTOF:接收机超时
  • bit 10 CTS:CTS 标志
  • bit 9 CTSIF:CTS 中断标志
  • bit 8 LBDF:LIN 断裂检测标志
  • bit 7 TXE:传输数据寄存器为空
  • bit 6 TC:传输完成
  • bit 5 RXNE:读取数据寄存器未空
  • bit 4 IDLE: Idle line detected
  • bit 3 ORECF:超载错误清除标志
  • bit 2 NCF:检测到噪声,清除标志
  • bit 1 FECF:框架错误清除标志
  • bit 0 PECF:奇偶误差清除标志

USART interrupt flag clear register (USART_ICR)中断清除寄存器

  • bit 20 WUCF:从停止模式唤醒 清除标志
  • bit 17 CMCF:角色匹配清除标志
  • bit 12 EOBCF:块清除标志结束
  • bit 11 RTOCF:接收机超时清除标志
  • bit 9 CTSCF:CTS 清除标志
  • bit 8 LBDCF:LIN 断裂检测清除标志
  • bit 6 TCCF:传输完全清除标志
  • bit 4 IDLECF:检测到空闲线路,清除标志
  • bit 3 ORECF:超载错误清除标志
  • bit 2 NCF:检测到噪声,清除标志
  • bit 1 FECF:框架错误清除标志
  • bit 0 PECF:奇偶误差清除标志
    • 写 1 则清除

USART receive data register (USART_RDR) 接收寄存器

  • bit 8-0 RDR 接收数据
    • 包含接收到的数据字符

USART transmit data register (USART_TDR) 传输寄存器

  • bit 8-0 TDR 发送数据
    • 要传输的数据字符

代码流程讲解

初始化中断

/* USART1 interrupt Init */
HAL_NVIC_SetPriority(USART1_IRQn, 10, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);
  /* USER CODE BEGIN USART1_MspInit 1 */
    __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);
    __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);

    __HAL_UART_CLEAR_IT(&huart1, UART_IT_RXNE);
    __HAL_UART_CLEAR_IT(&huart1, UART_CLEAR_IDLEF);
  /* USER CODE END USART1_MspInit 1 */

数据接收和转发

void USART1_IRQHandler(void)
{
    if (__HAL_UART_GET_IT(&huart1, UART_IT_IDLE))
    {
      message1 = 1;
      __HAL_UART_CLEAR_IT(&huart1, UART_CLEAR_IDLEF);
    }
    else if (__HAL_UART_GET_IT(&huart1, UART_IT_RXNE))
    {
      message2 = 1;

      HAL_UART_Receive(&huart1, (uint8_t *)&ch[ch_size], 1, 0xffff);
      if(ch_size >= (RXBUFFERSIZE - 1))
          ch_size = 0;
      else
          ch_size++;
    }
}

空闲中断信息来之后才整块发送到电脑端串口(huart2),RXNE中断读取数据即可清除

效果展示

1.jpeg

1.jpg

收藏 评论0 发布时间:2026-1-13 20:26

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版