数码之家

 找回密码
 立即注册
搜索
查看: 3795|回复: 7

[STM] 使用stm32f103中断 感悟

[复制链接]
发表于 2019-2-22 03:46:32 | 显示全部楼层 |阅读模式
本帖最后由 腾龙科技 于 2019-2-22 03:51 编辑

单片机型号是stm32f103c8t6    很经典的型号,最近在用中断识别  SPI通信的  时钟信号(SCLK)    频率已经调到72M总感觉不是很得心应手,信号总会抓错,经过了两天的查错,发现程序没有啥明显的错误,难道是单片机频率不够?    后来琢磨直接用寄存器控制试试吧,经过这么一改  OK了,信号都识别到了    对比后发现库函数还是有延迟的,平时不显,但是干点时序严格的活,库函数的延迟就很明显了,下面上图:   程序里注释错误了,,应该是PC15,,0x8000  对应的是PC15.

main   函数里面就一个while(1){}    自循环


中断使用的上升沿
这是用的库函数

下面是库函数     逻辑分析仪测试
进入中断到执行命令    结果:1.2188us

-----------------------------------------------------------------------------------------------------------------------------------
下面是用寄存器

下面是寄存器     逻辑分析仪测试
进入中断到执行命令    结果:0.6875us



结果喜人,,直接寄存器操作要快的多,至于更快的方法占时还没摸索到,欢迎大家共同探讨,批评指正。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1 +1 家元 +30 收起 理由
家睦 + 1 + 30

查看全部打赏

发表于 2019-2-22 09:52:34 来自手机浏览器 | 显示全部楼层
可以汇编,可以机器码:titter:
回复 支持 反对

使用道具 举报

发表于 2019-2-23 01:32:46 | 显示全部楼层
你知道为啥慢吗?因为那个getstatues函数啊。本来一个很简单的标志位判断 搞那么复杂 老奶奶裹脚布
回复 支持 反对

使用道具 举报

发表于 2019-2-23 01:38:04 | 显示全部楼层
本帖最后由 2545889167 于 2019-2-23 01:55 编辑

再快很难了 主要大头时间占用是触发中断-压栈-中断向量表-进中断处理函数的时间cm3理论最快进中断耗时是12t
其中8个寄存器的压栈 8t
取中断向量表 1t
更新sp lr pc 3t
当然 理论12t (跑在sram可达到)实际上因为flash速度跟不上拖后腿 这个时间肯定不止
比如:取中断向量 更新pc 这两个操作 都是跨越地址 根据具体延时,这里要多加时间

要压缩 几个有所改善但是不是大头的时间:
1同一个中断线上面只开一路中断 吧那个if判断省了
2先翻引脚再清中断(清中断不重要 没必要一开始就清 出之前清就行)
回复 支持 反对

使用道具 举报

发表于 2019-2-23 01:40:50 | 显示全部楼层
如果追求极致 几个方面供参考:
当然需要在考虑具体应用下再做选择和设计
1考虑定时器捕获比较等方法
2考虑dma操作
3考虑软件循环查询
回复 支持 反对

使用道具 举报

发表于 2019-2-23 01:58:27 | 显示全部楼层
算了下 好像进中断时间也不算大头哇。如果按72mhz计算 0.6875 有快50t了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-23 08:32:30 | 显示全部楼层
长见识了,知识面真丰富,说的句句在理啊,中午用你的方法测试下,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-23 21:06:47 | 显示全部楼层
从中午  到现在  经过了漫长的调试    有了如下结果
1:关闭JTAG  使用PB4  作为外部中断       从进入中断到输出信号  时间是:0.5313us
2:使用PB8 作为外部中断    从进入中断到输出信号   时间是:0.5313us
如果加上if判断   时间是:0.6250us
3:如果清中断标志位  放在末尾    时间是:0.4375,但是   每收到1个信号   会进入两次中断。
就这个问题研究了好久  好久,,占时还没有结果。

这个图就是  收到一个上升沿   就会进入两次中断,,,如果吧清理中断标志位放在进入中断的第一行就啥问题都没有,但是时间上差好多

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-11 17:24 , Processed in 0.327601 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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