连续依次输出GPIO口用什么方法好?

czl2008   2008-10-9 13:00 楼主
GPIOC->ODR?
每一次移位?
GPIOC->ODR =m; 
delay(10);
m=m>>1;



还是直接 寄存器操作?
类似

      /* Toggle JTDO pin */
      GPIO_WriteBit(GPIOB, GPIO_Pin_3, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_3)));
      /* Insert delay */
      Delay(0x5FFFF);

一行行 打下去。

主要为什么要一个个点亮GPIO的原因,准备接 LED灯泡,然后像 最近 的 美剧
霹雳游侠 车头一样。。。。

把STM32当这个用处,大材小用了。。 谁叫我身边就这块板子。

回复评论 (5)

搞不懂你有几个GPIO输出口?有几个LEG?

                                 楼主的2种方法是不等价的!
点赞  2008-10-9 13:30

还不知道LED有多少个

一个GPIO 16个LED不够的话,那就要A B C D 等都用上了。

个人想法很粗糙,需要实践的磨合。
点赞  2008-10-10 00:04

不知道有具体有多少LED没关系,至少可以说说你想达到什么

                                 根据你自己写的程序,猜不出来你要做什么。
点赞  2008-10-10 08:53

自己表达不清,呵呵

简单的描述: 类似控制大楼外面灯泡的亮。 当然我想要的效果是小的LED灯。 

板上的GPIO流水灯实验这个一直有看,还是比较了解。现在是运用时候需要实践,想法有点粗糙。

上面两个程序分别是两个GPIO的实验。
第一个是m,定义诸如0X8000,然后每次移位,GPIOC->ODR =m; 输出。


第二段程序,是KEIL里STM实验包的程序。贴错了,不好意思香版。

      GPIO_WriteBit(GPIOA, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_13)));
      /* Insert delay */
      Delay(0x5FFFF);

      /* Toggle JTCK/SWCLK pin */
      GPIO_WriteBit(GPIOA, GPIO_Pin_14, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_14)));
      /* Insert delay */
      Delay(0x5FFFF);

主要的效果吗,一排红色LED灯一个个的闪过熄灭,但要做出有,“有彗尾,拖尾效果,”的效果,就是不知道是程序上要努力还是LED灯的选材。

再次感谢香版的关注。
自己封贴,实践后再顶。
点赞  2008-10-10 09:09

估计你想实现一组LED灯中在不同时刻有若干个不同灯点亮的

比如8个LED灯,有如下效果:

T0:灭 灭 灭 灭 灭 灭 灭 灭 0x00
T1:灭 灭 灭 灭 灭 灭 灭 亮 0x01
T2:灭 灭 灭 灭 灭 灭 亮 亮 0x03
T2:灭 灭 灭 灭 灭 亮 亮 亮 0x07
T3:灭 灭 灭 灭 亮 亮 亮 灭 0x0E
T4:灭 灭 灭 亮 亮 亮 灭 灭 0x1C
.....

这样的话,最方便的就是使用ODR寄存器定时地写入不同的数据。
点赞  2008-10-10 10:49
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复