本帖最后由 atoz_elc 于 2025-3-14 13:57 编辑
1、引言UART 是个常用的通讯接口,平时处于高电平状态。UART_RX 在接收数据时起始位会拉低电平这个动作。用户想知道是否可以利用 I/O 口内部的连接来使能 EXTI,通过外部中断来发现这个动作,这是本文要探讨的内容。 2、问题客户在开发其产品过程中,使用了 STM32F401RCT6。产品需要执行以下操作:主机发来命令→采集数据→数据处理→回传结果。但是由于数据处理过程中的算法复杂,执行时间较长,导致无法在限定的时间内回传结果。经过一系列优化后仍然还差一点点,所以客户希望在主机通过 UART 发来的命令的起始位时,就开启数据采集,而不必等待接收完成。这就要求了系统必须要在 UART_RX 收到的数据起始位就能够得到通知,也就是必须在起始位就有个中断。但是 STM32F4 中的 UART 外设并没有提供在接收数据的起始位产生中断的功能,而是接收完一个数据帧才能产生相应通信中断。 客户最初也考虑到了如果将 UART_RX 从外部连接到另一个 I/O 口,然后配置这个 I/O口为下降沿外部中断的输入口,当 UART_RX 接收到数据的时候,起始位就会在这个 I/O口上产生外部中断。但是,因为之前没有这么考虑过,硬件上没有预留,所以不好处理。想了解是否有更好的办法解决这个问题。 |