完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用的是PIC32MX795F512L微控制器。我需要开发一个应用程序,其中4根连接到控制器引脚的LED将以1秒的速度连续闪烁,并且有15根输入连接到控制器。这些输入每当达到高电平时就会向UART发送一些数据。例如:上面的技术是轮询方法,不向UART提供实时输入数据。所以我想使用UART TX发送器,这样每当输入变高时,TX中断就会被触发。我没有很好的中断经验,也没有UART TX中断的例子。我试着设置以下配置,但是它没有工作。如果任何人可以指导我纠正它的文档或UART TX中断的任何例子。请帮忙!谢谢
|
|
相关推荐
8个回答
|
|
您看错了。造成延迟的不是TX,而是您的代码在执行延迟时根本不查看输入。为了使它按照您希望的方式工作,您需要将闪烁的LED移动到定时器中断,以便您可以自由地以pos的速度轮询输入。可以。
|
|
|
|
也许我的方法是错误的。谢谢指点我的计时器中断。
|
|
|
|
哦,在编写中断服务程序之前,不要去启用中断!
|
|
|
|
我是新手。你能举个例子吗?
|
|
|
|
你读过XC32用户指南中的第13章了吗?
|
|
|
|
也可以使用CN中断。当引脚改变其状态时,将调用这些。
|
|
|
|
您必须非常小心地那样做,因为您无法从中断内向USART发送字符串,并且您需要防止输入上的噪声产生几十个快速中断。
|
|
|
|
另一个要注意的是UART TX中断功能是如何实现的。我建议彻底阅读参考手册UART部分,因为这描述了UART TX中断如何工作,因为您必须正确配置UTXISEL位字段——这个位字段在一个UART控制寄存器中。一旦在程序初始化期间启用了特定UART的发射机,就会看到设置了TX IRQ标志。这是因为它表示TX缓冲器是空的…再次,您需要阅读PIC32的参考手册UART部分。许多人认为,当你发送一个字节作为其他MCU处理这个事件时,就会产生这个中断。PIC32的缓冲区在某种程度上是空的信号,也是UTXISEL的配置方式。我过去使用这个中断的方式是让一些UART TX缓冲区被数据启动,并且只在完成之后启用中断。在ISR中,我会一次发送一个字节。此事件允许处理器/目标应用程序知道UART TX硬化缓冲器能够在没有问题的情况下被加载。一旦TX缓冲区耗尽,我将禁用中断,直到由于应用程序必须完成这个任务的任何原因有更多的数据到达TX,然后为另一个TX重复该过程。由于这个中断是持续的,所以大量的时间不断地进入(并且希望退出)这个ISR。处理UART TX的另一个好方法是使用DMA,但是这需要DMA控制器的知识。为了获得这一知识,最好的参考材料是我将从哪里开始。这绝对是卸载处理器的好方法。毫无疑问,这可能是使用UART TX作为轮询的最有效的方式是浪费时间(UART比MCU慢许多倍),而中断仍然必须处理上下文切换——即在很大程度上SW控件仍然要处理所有UART数据的传输。DMA将具有CPU最小的干预来执行UART TX。您将为DMA牺牲一些内部总线周期,但是这应该可以忽略不计-希望取决于如何使用这个…
|
|
|
|
只有小组成员才能发言,加入小组>>
5006 浏览 9 评论
1923 浏览 8 评论
1853 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3068 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2144 浏览 5 评论
578浏览 1评论
432浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
477浏览 0评论
368浏览 0评论
IPECMD命令烧录AVR128DA48芯片,报找不到芯片错误
853浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-18 00:46 , Processed in 1.397954 second(s), Total 92, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号