完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好!
我有一个连接到 GPIO 输入 (PD7) 的 100 kHz 外部信号,目前我正在使用一个良好的信号发生器生成信号,因此它的抖动很小。我想要做的是测量 4096 个连续周期中每个周期的长度,而不跳过任何一个。 我的程序很简单: 我让 tiMER 2 在 32 位模式下全速运行。PD7 的上升沿中断调用一个函数,该函数首先将定时器值保存在静态变量中,然后清除定时器并将读取的值保存在静态 uint32_t [4096] 缓冲区中,当缓冲区已满时我停用中断并且过程是完成的。在稍后阶段,我通过 LPUART1(连接到 ST-Link)将存储的值发送到计算机。在测量周期时,没有其他任何事情发生,主程序停留在一个案例值中,等待变量发生变化。 我所看到的是周期被正确测量,除了大约每 700us,一个周期值长得多而另一个相邻的周期值短得多。它给人的印象是在处理中断时发生了一些事情。我尝试了很多事情,比如:确保没有其他中断被激活,并且基本 CPU 中断设置为最低优先级(PD7 处于最高优先级)。我还更改了优化级别,以查看代码的编译方式是否有影响。 我想知道 ST-Link 是否会以某种方式进行干扰?以某种方式创建中断? 谢谢你。 R。 PS:我正在使用 NUCLEO-L4R5ZI 板,我正在使用 ST-Link 生成的 8 MHz 时钟,因为它比内部 RC 更准确。不幸的是,目前我手头没有代码,但如果相关,我可以发布。 |
|
相关推荐
1个回答
|
|
完整的硬件:使用定时器自由运行并在传入的下降沿上进行捕获,并在捕获时使用 dma 来填充缓冲区,然后在完成时获得中断。采集期间没有开关,期间。希望被选中的部分能做到这一点。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2320 浏览 1 评论
3079 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1647 浏览 1 评论
3464 浏览 6 评论
5816 浏览 21 评论
808浏览 4评论
1183浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
452浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1165浏览 3评论
1217浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 20:14 , Processed in 0.956155 second(s), Total 76, Slave 60 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号