博客首页 | 排行榜 |

bjtuxiaolong的博客

从0开始学STM32

个人档案
博文分类
简单的流水灯  2009-01-21 19:01
今天把流水灯基本功能出来了

不过STM32的函数库还是弄得我一头雾水...

和昨天想的差不多,直接在例程里面改的

配置GPIO端口

  /* 配置PC4-PC7为输出,速度为50Mhz*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 |GPIO_Pin_6 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

主函数里面通过向C口输出,实现循环点亮LED1-LED4

for(;;)
  {
    GPIOC->ODR=0xffffff1f;
    delay();
    GPIOC->ODR=0xffffff2f;
    delay();
    GPIOC->ODR=0xffffff4f;
    delay();
    GPIOC->ODR=0xffffff8f;
    delay();
  }

只是利用了端口数据输出寄存器GPIOx_ODR,其低16位对应每个引脚,高16位保留。

只要更改GPIOC->ODR的输出值便可以设定流水灯的花样。

中断那部分还是没弄好。。。。一会再看看。。


还有网上看到一个流水灯的程序,思路不太一样,不过看着挺好的,贴过来了

端口设置可能有点不太一样,不过基本思路就是这样的,用到了库函数中GPIO_SetBits和GPIO_ResetBits两个函数

    static u32 i="1";

    switch(i)

    {

      case 1:

        GPIO_ResetBits(GPIOC, GPIO_Pin_4); //LED5

        GPIO_SetBits(GPIOC, GPIO_Pin_7);  //LED2

      break;

      case 2:

        GPIO_ResetBits(GPIOC, GPIO_Pin_7); //LED2

        GPIO_SetBits(GPIOC, GPIO_Pin_6); //LED3

      break;

       case 3:

        GPIO_ResetBits(GPIOC, GPIO_Pin_6); //LED3

        GPIO_SetBits(GPIOC, GPIO_Pin_5); //LED4

      break;

       case 4:

        GPIO_ResetBits(GPIOC, GPIO_Pin_5); //LED4

        GPIO_SetBits(GPIOC, GPIO_Pin_4);  //LED5

        i="0";

      break;

      default :

        i="0";

      break;

    }

    i++; //切换到下一个灯



|
上一篇:中断... | 下一篇:回家了..
以下网友评论只代表其个人观点,不代表本网站的观点或立场