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

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分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版