OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1999|回复: 0

关于数据发送与中断的一些原理上的讨论

[复制链接]

4

主题

9

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-9-12
在线时间
8 小时
发表于 2017-9-15 12:53:20 | 显示全部楼层 |阅读模式
以前我刚刚开始接触单片机的时候,我一直以为是中断在产生时序,发送数据,后面我发现这不科学,以下是我的观点,望各位老大,给点建议。

大家都知道通常我们STM32的发送SPI、串口数据,都只要初始化之后,往SPIx->DR、USARTx->DR寄存器中写入数据就会自动按照时序发送数据,51或者其他嵌入式设备也都大同小异,那么中断是用来干嘛的呢?

是中断在发送数据吗,还是另有其人?


但是我屏蔽中断后,往SPIx->DR、USARTx->DR寄存器中写入数据,还是会自动按照时序发送数据,而我们看中断函数就可以知道,其实中断并没有负责处理发送,它更像是在通知CPU,某个数据发送完成,或者接收完成。由此我们可以确定,数据的发送跟中断无关。
那到底是谁在发送数据呢,我们模拟发送SPI和串口的数据的时候就知道,发送数据是需要时序的,初始化的时候,需要初始化时钟并分配到指定外设类型,这时相应的SCL时钟波形就已经产生了,后面指定相应的数据长度,以及国定的管脚,这个时候,设备根据寄存器设置,自动形成相应的数据发生电路,每当我们往DR寄存器中写入数据时,此时数据传输就已经开始了。

那么中断是怎么产生的呢,数据传输是由这些硬件产生的,但是数据传输过程中,硬件会自动产生一系列的标志,比如传输完成、传输错误等标志位,而CPU每隔一段时间会扫描这些中断标志位,根据我们设置的中断类型,符合相应的中断号就会进入中断服务函数,这就是硬件中断的由来。而软件中断,是由我们程序产生的,不在此次讨论范围内。


这些都是我瞎想的,不知道是不是错的,各位老大帮忙看看对不对
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 16:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表