近期用逻辑分析仪分析一个别人开发的STC 1T系列的单片机IO口的数据(这几个IO均为普通IO口且不在同一组),电平的跳变很一致,不知是用什么方法实现的,如下图:
自己用MINI的板子写程序试了一下,如果单独操作同一组内的IO口电平跳变的话是可以做到同步;但是操作不同组的IO(比如PC4.5.6.7和PB8.9.10.11同时置1,然后同时置0,置1,……)怎么也不能实现同步跳变,如下图:
其中试过宏定义的方法把不同组IO转换成像操作同一组IO一样的方式操作,还是不能解决!
#define PORT_DATA(x){GPIOB->ODR=(x<<4)&0x0F00;GPIOC->ODR=(x<<4)&0x00F0;}
这个问题困扰我很久了,哪位大侠能帮我解惑,还望不吝赐教!谢谢了!顺便祝大家元旦快乐!!!
谢谢!我试一下!
你好歹是两条代码,执行代码也是需要时间的,怎么可能同时。
这个误差是没什么影响!只是不明白手头这个STC单片机的程序员是怎么做到的,肯定是有办法实现,尤其在频率要求比较高的场合,不至于波形变形过大而造成数据不稳定。
抽空试一下,我想51能做的事情STM32应该能做的更快更好。谢谢您的提示!
所以我看STM32做这个,用位寻址的方式怕不是行。不过我也不太了解cortex-m的汇编指令。
一周热门 更多>