菜鸟学STM32——流水灯

从知道有STM32这个东西到现在也有快有2周时间了,还记得第一次接触它时便被它强大的功能震撼了,由于之前只学过51,STM32迎面扑来的那么多内容让我着实有点招架不住,经朋友指点,果断放弃之前准备认真研究数据手册的想法,开始从例程入手,不过对于只操作过51的我来说,对我来说例程都有着不小的难度,没办法,又开始复习C语言中的结构体和指针的部分,《C语言程序设计——谭浩强版》《C和指针》一起看,顺便把之前遗忘的细节也温习了下,这周日又回过头来研究STM32的例程,情况果然好转,库函数中能明白个大概了,再加上网上找到的汉化版库函数一起研究,学习的效率便又提升了不少,今天总算把开发板(没办法,作为穷学生,在淘宝上买了款最便宜的,板子不错,可惜教材基本没有http://item.taobao.com/item.htm?id=7470388049老板超有耐心,顺便帮他做个广告,哈哈)上面的4个LED点亮了,代码共享下(注释比较全!)以便帮助想我一样的菜鸟能快速步入STM32学习的正轨!如有错误,还请高手指正,在此不胜感激!

 

 演示的是4个蓝色LED(D1-D4) 轮流闪烁,GPIO_C6,7 GPIO_D6,13分别控制一个LED

#include "stm32f10x.h"

GPIO_InitTypeDef GPIO_InitStructure; /* 定义“GPIO_InitStructure”为结构体“GPIO_InitTypeDef”类型

“GPIO_InitTypeDef”定义于“Stm32f10x_gpio.h”中

typedef struct

{

  uint16_t GPIO_Pin;

GPIOSpeed_TypeDef GPIO_Speed;

GPIOMode_TypeDef GPIO_Mode;

}GPIO_InitTypeDef;为了便于理解,把定义粘贴了出来,O(∩_∩)O*/


void RCC_Configuration(void)

{   

  SystemInit(); //定义于“system_stm32f10x.c”,RCC 系统复位(调试目的)

}


void Delay(__IO uint32_t nCount); //__IO定义于"core_cm3.h"(#define __IO volatile)

//uint32_t定义于“stdint.h”(typedef unsigned int uint32_t;)

int main(void)

{

  RCC_Configuration();     //System Clocks Configuration

  

  RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART1 |RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |

                         RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |

                         RCC_APB2Periph_GPIOE, ENABLE);


  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //PP:推挽输出

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;    //D1  D2

  GPIO_Init(GPIOC, &GPIO_InitStructure);  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_13; //D3, D4

  GPIO_Init(GPIOD, &GPIO_InitStructure);


  while (1)

  {

    GPIO_SetBits(GPIOC, GPIO_Pin_6); //D1亮                   

    GPIO_SetBits(GPIOC, GPIO_Pin_7 ); //D2亮  

    GPIO_SetBits(GPIOD, GPIO_Pin_13 ); //D3亮

    GPIO_SetBits(GPIOD, GPIO_Pin_6 ); //D4亮

    Delay(0xAFFFF);

    GPIO_ResetBits(GPIOC, GPIO_Pin_6); //D1灭 

    GPIO_ResetBits(GPIOC, GPIO_Pin_7); //D2灭 

    GPIO_ResetBits(GPIOD, GPIO_Pin_13); //D3灭 

    GPIO_ResetBits(GPIOD, GPIO_Pin_6); //D4灭

    Delay(0xAFFFF);

  }

}


void Delay(__IO uint32_t nCount)

{

  for(; nCount != 0; nCount--);

}

 

 

高手们看了注释别笑我哈,我刚看的时候确实把我弄懵了.......

你可能感兴趣的:(STM32)