逻辑分析仪检测单片机的多个IO口电平跳变不能同步节拍

2019-10-15 20:28发布

近期用逻辑分析仪分析一个别人开发的STC 1T系列的单片机IO口的数据(这几个IO均为普通IO口且不在同一组),电平的跳变很一致,不知是用什么方法实现的,如下图: QQ截图20161230152243.jpg
自己用MINI的板子写程序试了一下,如果单独操作同一组内的IO口电平跳变的话是可以做到同步;但是操作不同组的IO(比如PC4.5.6.7和PB8.9.10.11同时置1,然后同时置0,置1,……)怎么也不能实现同步跳变,如下图:
QQ截图20161230152333.jpg
其中试过宏定义的方法把不同组IO转换成像操作同一组IO一样的方式操作,还是不能解决!
#define PORT_DATA(x){GPIOB->ODR=(x<<4)&0x0F00;GPIOC->ODR=(x<<4)&0x00F0;}

这个问题困扰我很久了,哪位大侠能帮我解惑,还望不吝赐教!谢谢了!顺便祝大家元旦快乐!!!



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
endata
1楼-- · 2019-10-16 01:38
feilusia 发表于 2016-12-30 16:48
LZ看看这个对你有没有帮助。

谢谢!我试一下!
feilusia
2楼-- · 2019-10-16 03:13
差那么0.05us的事情,就不用较真了……
你好歹是两条代码,执行代码也是需要时间的,怎么可能同时。
endata
3楼-- · 2019-10-16 04:40
feilusia 发表于 2016-12-30 15:50
差那么0.05us的事情,就不用较真了……
你好歹是两条代码,执行代码也是需要时间的,怎么可能同时。

这个误差是没什么影响!只是不明白手头这个STC单片机的程序员是怎么做到的,肯定是有办法实现,尤其在频率要求比较高的场合,不至于波形变形过大而造成数据不稳定。
jinggx
4楼-- · 2019-10-16 05:25
 精彩回答 2  元偷偷看……
endata
5楼-- · 2019-10-16 06:39
jinggx 发表于 2016-12-30 16:13
51单片机可以位寻址,把对应的几个IO与位寻址区的变量关联起来。

抽空试一下,我想51能做的事情STM32应该能做的更快更好。谢谢您的提示!
jinggx
6楼-- · 2019-10-16 09:28
STM32没有位寻址,STM32出生在硬件性能繁荣且有些过剩的时代,不在乎RAM有些地方有点浪费。

所以我看STM32做这个,用位寻址的方式怕不是行。不过我也不太了解cortex-m的汇编指令。

一周热门 更多>