OpenEdv-开源电子网

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

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

[复制链接]

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-9-9
在线时间
43 小时
发表于 2016-12-30 15:46:41 | 显示全部楼层 |阅读模式
10金钱
近期用逻辑分析仪分析一个别人开发的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;}

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



最佳答案

查看完整内容[请看2#楼]

谢谢!我试一下!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-9-9
在线时间
43 小时
 楼主| 发表于 2016-12-30 15:46:42 | 显示全部楼层
feilusia 发表于 2016-12-30 16:48
LZ看看这个对你有没有帮助。

谢谢!我试一下!
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2016-12-30 15:50:56 | 显示全部楼层
差那么0.05us的事情,就不用较真了……
你好歹是两条代码,执行代码也是需要时间的,怎么可能同时。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-9-9
在线时间
43 小时
 楼主| 发表于 2016-12-30 16:00:42 | 显示全部楼层
feilusia 发表于 2016-12-30 15:50
差那么0.05us的事情,就不用较真了……
你好歹是两条代码,执行代码也是需要时间的,怎么可能同时。

这个误差是没什么影响!只是不明白手头这个STC单片机的程序员是怎么做到的,肯定是有办法实现,尤其在频率要求比较高的场合,不至于波形变形过大而造成数据不稳定。
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-12-30 16:13:33 | 显示全部楼层
51单片机可以位寻址,把对应的几个IO与位寻址区的变量关联起来。


多年不玩51了,没试过具体实现怎么写程序,你自己有条件就试一下吧。
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-9-9
在线时间
43 小时
 楼主| 发表于 2016-12-30 16:19:39 | 显示全部楼层
jinggx 发表于 2016-12-30 16:13
51单片机可以位寻址,把对应的几个IO与位寻址区的变量关联起来。

抽空试一下,我想51能做的事情STM32应该能做的更快更好。谢谢您的提示!
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2016-12-30 16:26:10 | 显示全部楼层
STM32没有位寻址,STM32出生在硬件性能繁荣且有些过剩的时代,不在乎RAM有些地方有点浪费。

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

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2016-12-30 16:48:59 | 显示全部楼层
LZ看看这个对你有没有帮助。

STM32_IO口的位操作实现.rar

17.7 KB, 下载次数: 125

博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2016-9-9
在线时间
43 小时
 楼主| 发表于 2016-12-31 12:46:24 | 显示全部楼层
趁放假这两天研究一下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 06:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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