• 资料介绍
    • 1、引言
    • 2、问题
    • 3、问题解决
    • 4、小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1436 UART RX是否可以同时使用EXTI外部中断

03/11 16:57
869
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1436 UART RX是否可以同时使用EXTI外部中断

596.64 KB

1、引言

UART 是个常用的通讯接口,平时处于高电平状态。UART_RX 在接收数据时起始位会拉低电平这个动作。用户想知道是否可以利用 I/O 口内部的连接来使能 EXTI,通过外部中断来发现这个动作,这是本文要探讨的内容。

2、问题

客户在开发其产品过程中,使用了 STM32F401RCT6。产品需要执行以下操作:主机发来命令→采集数据→数据处理→回传结果。但是由于数据处理过程中的算法复杂,执行时间较长,导致无法在限定的时间内回传结果。经过一系列优化后仍然还差一点点,所以客户希望在主机通过 UART 发来的命令的起始位时,就开启数据采集,而不必等待接收完成。这就要求了系统必须要在 UART_RX 收到的数据起始位就能够得到通知,也就是必须在起始位就有个中断。但是 STM32F4 中的 UART 外设并没有提供在接收数据的起始位产生中断的功能,而是接收完一个数据帧才能产生相应通信中断。

客户最初也考虑到了如果将 UART_RX 从外部连接到另一个 I/O 口,然后配置这个 I/O口为下降沿外部中断的输入口,当 UART_RX 接收到数据的时候,起始位就会在这个 I/O口上产生外部中断。但是,因为之前没有这么考虑过,硬件上没有预留,所以不好处理。想了解是否有更好的办法解决这个问题。

3、问题解决

通过测试发现,确实是可以在 PA3 作为 UART_RX 的时候使能其 EXTI 中断功能,当UART_RX 收到数据的时候,在数据起始位的下降沿就能产生一次 EXTI 中断,这样,用户从 EXTI 中断便可得知 UART_RX 已经开始接收数据,以并行执行其他准备任务。所以,我们的思路是正确且可行的。需要做的事情主要就是在 USART 的初始化之后,手动对 UART_RX 引脚所对应的 I/O 口使能其 EXTI 功能并打开中断。

4、小结

这个例子中,使用了 I/O 口作为复用引脚时,其 I/O 引脚仍然还是连接到内部其他电路的,包括连接到输入数据寄存器,连接到 EXTI 电路。所以,我们可以利用这种连接来帮助我们实现一些特殊的功能。

很多时候,有些问题可以通过 STM32 内部的一些连接来实现一些特殊的使用情况。STM32 在内部其实是提供很多内联的信号,特别是 TIM 外设、ADC 外设、DMA 外设等等。所以,在实际使用中,多动动脑筋,说不定就能找到一个简单的解决方案。

资料预览

相关推荐