STM32学习杂记(1)

       野火的《零死角玩转STM32》里面的“流水灯的前世今生”中,三个LED灯都是连接在一个端口GPIOC的,但是我买的单片机开发板是一个在GPIOA

一个在GPIOD

       野火的LED.c的代码是

捕获2

 

在控制引脚的那行代码

 1: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;

他并没有提到说是控制哪个引脚啊?

后来我baidu之。

看了几个网上大家写的文章,我想,会不会是前面的代码的缘故?

 1: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
 2: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
 3: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 4: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 5: GPIO_Init(GPIOC, &GPIO_InitStructure);

是因为有第一行,所以先开启了C端口,然后对C端口进行设置,而如果是两个不同的端口的话就必须要一个一个设置。

我也不知道对不对,只是一种猜测而已。

 

文中提到的参考文章见此处

 

补充:

在网上看到一个例子,特摘录如下,原文点击这里

 

   1: void GPIO_Configuration(void)
   2: {
   3:  GPIO_InitTypeDef GPIO_InitStructure;
   4:  
   5:  /*允许总线CLOCK,在使用GPIO之前必须允许相应端的时钟.
   6:  从STM32的设计角度上说,没被允许的端将不接入时钟,也就不会耗能,
   7:  这是STM32节能的一种技巧,*/
   8:  
   9:  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  10:  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  11:  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  12:  /* PB0,5,8,9输出 */
  13:  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9;
  14:  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
  15:  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
  16:  GPIO_Init(GPIOB, &GPIO_InitStructure);
  17:  
  18:  /* PC5,7输出*/
  19:  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_7;
  20:  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
  21:  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
  22:  GPIO_Init(GPIOC, &GPIO_InitStructure);
  23:  
  24:  /*PA7,输出*/
  25:  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  26:  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
  27:  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
  28:  GPIO_Init(GPIOA, &GPIO_InitStructure);
  29:  
  30:  /*PA8,输出*/
  31:  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  32:  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //开漏输出
  33:  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50M时钟速度
  34:  GPIO_Init(GPIOA, &GPIO_InitStructure);
  35:  
  36:  
  37: }
posted @ 2013-02-07 13:05  此去经年  阅读(392)  评论(0编辑  收藏  举报