完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-13 16:42 编辑
ccs5.3下,TMS320F28035PNT的GPIOA16--GPIO23用作输出,默认为高,低有效。 控制按顺序将GPIOA16--GPIO23中的每一位先输出低1.2秒后该位恢复为高,重复两次。即 GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO16 = 1; 延时5秒 GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO16 = 1; 延时5 GpioDataRegs.GPACLEAR.bit.GPIO17 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO17 = 1; 延时5秒 GpioDataRegs.GPACLEAR.bit.GPIO17 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO17 = 1; 秒 延时5秒 …… 延时5 GpioDataRegs.GPACLEAR.bit.GPIO23 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO23 = 1; 延时5秒 GpioDataRegs.GPACLEAR.bit.GPIO23= 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO23 = 1; 延时5秒 GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO16 = 1; 延时5秒 GpioDataRegs.GPACLEAR.bit.GPIO16 = 1; 延时1.2秒 GpioDataRegs.GPASET.bit.GPIO16 = 1; …… 在控制过程中发现:有时xx位由低变高后应该下一位(XX+1位)为低,结果却是xx位输出为低。 例如本应:GPIOA16为低 --》延时1.2秒--》GPIOA16为高 --》延时5秒 --》GPIOA16为低 --》延时1.2秒--》GPIOA16为高 ------> GPIOA17为低 --》延时1.2秒--》GPIOA17为高 --》延时5秒 --》GPIOA17为低 --》延时1.2秒--》GPIOA17为高 实际为:GPIOA16为低 --》延时1.2秒--》GPIOA16为高 --》延时5秒 --》GPIOA16为低 --》延时1.2秒--》GPIOA16为高 ------> GPIOA16为低 --》延时1.2秒--》GPIOA17为高 --》延时5秒 --》GPIOA17为低 --》延时1.2秒--》GPIOA17为高 ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑-此处是GPIOA16为低,而不是GPIOA17为低----------| 这种现象随机出现,比较频繁,且不仅仅限于GPIOA16,GPIOA17。GPIOA16~GPIOA23均会出现。 但有个特点是,位号由GPIOAxx变换时总为GPIOA(xx+1)时,是本应GPIOA(xx+1)位为低,实际是GPIOAxx位再次为低。 且位号GPIOAxx,GPIOAxx+1……GPIOAxx+7顺序、逆序、乱序运行时,总是本该下一个位变低,实际却是上一位再次为低(仅一次,且偶尔随机出现)。 好像是GPIOxDAT的读-改-写,在下位变化时,仍将上一位值写入GPIO xDAT寄存器一样。可是我每一位改变后都有延时的呀? 且将GPxDAT、GPxSet、GPxClear、GPxToggle的bit设置方式,all设置方式都用了,每次写GPIO寄存器都加了1ms延时,还是不行。 在每一位改变时将GPIOxx连续几遍设为低或在每一位改变时将GPIOA重新初始化,也不行。 实在是没招了,请求哪位高手路过,指点一二。万分感谢! 板子也投了不少,咋办呀??!!!!! |
|
相关推荐
3个回答
|
|
junlong,
这种现象很奇怪。希望你能够提供更多的信息帮助我们判断。 1.你的代码是否有引用controlSUITE中的源文件? 2. 希望你能够提供GPIO的初始化代码,如果方便的话,可以提供这部分测试代码。 3. 你可以把其他引脚的代码去除掉,只留下GPIO16和GPIO17的代码,这样方便判断,不知道你有没有F28035简单的开发板,例如最小系统的controlCARD之类的,将代码load到开发板,再测试一下,排除外部电路的影响。 我认为GPIOCLEAR和GPIOSET不应该存在这个读修改写的问题。 Eric - ERIC |
|
|
|
首先,感谢您快速专业的解答。 确实像您认为的那样GPIOCLEAR和GPIOSET不应该存在这个读修改写的问题。 今天仔细分析程序,发现有一个控制标志复位的时机不恰当。导致了上述问题。现已解决。 再次感谢您的热心解答,对耽误您的宝贵时间感到十分抱歉。 祝 祺! |
|
|
|
您好 能介绍几位熟悉设计编程TMS320F28035PNT芯片工程师我认识吗 |
|
|
|
只有小组成员才能发言,加入小组>>
354 浏览 1 评论
547 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
793 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
664 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1141 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
88浏览 29评论
329浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
262浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
212浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
69浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 07:49 , Processed in 0.820793 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号