STM32学习笔记(一):跑马灯

二次信任 提交于 2020-02-01 03:59:05

本实验所采用的开发板为正点原子的MiniSTM32f103rc开发板,主函数程序如下,注释如下:
main.c

#include "stm32f10x.h"
 void Delay(u32 count)
 {
  u32 i=0;
  for(;i<count;i++);

 }
 int main(void)
 {    
  GPIO_InitTypeDef  GPIO_InitStructure;
     
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);     //使能PA,PD端口时钟
    
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                 //LED0-->PA.8 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口速度为50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);                     //根据设定参数初始化GPIOA.8
  GPIO_SetBits(GPIOA,GPIO_Pin_8);                         //PA.8 输出高

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                 //LED1-->PD.2 端口配置, 推挽输出
  GPIO_Init(GPIOD, &GPIO_InitStructure);                       //推挽输出 ,IO口速度为50MHz
  GPIO_SetBits(GPIOD,GPIO_Pin_2);                          //PD.2 输出高       
  while(1)
    {
        GPIO_ResetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOD,GPIO_Pin_2);
        Delay(3000000);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_ResetBits(GPIOD,GPIO_Pin_2);
        Delay(3000000);
    }
 }

 如果使用正点原子厂家所提供的system文件下的delay.h的头文件,可以更加方便地进行延时,利用这个头文件的延时效果如下,主要调用了我们的delay_init()函数以及后面的delay_ms()函数即可:

#include "stm32f10x.h"
#include "delay.h"
 void Delay(u32 count)
 {
  u32 i=0;
  for(;i<count;i++);

 }
 int main(void)
 {    
  GPIO_InitTypeDef  GPIO_InitStructure;
     
     
    delay_init();
     
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);     //使能PA,PD端口时钟
    
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                 //LED0-->PA.8 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口速度为50MHz
  GPIO_Init(GPIOA, &GPIO_InitStructure);                     //根据设定参数初始化GPIOA.8
  GPIO_SetBits(GPIOA,GPIO_Pin_8);                         //PA.8 输出高

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                 //LED1-->PD.2 端口配置, 推挽输出
  GPIO_Init(GPIOD, &GPIO_InitStructure);                       //推挽输出 ,IO口速度为50MHz
  GPIO_SetBits(GPIOD,GPIO_Pin_2);                          //PD.2 输出高       
  while(1)
    {
        GPIO_ResetBits(GPIOA,GPIO_Pin_8);
        GPIO_SetBits(GPIOD,GPIO_Pin_2);
        //Delay(3000000);
        delay_ms(300);
        GPIO_SetBits(GPIOA,GPIO_Pin_8);
        GPIO_ResetBits(GPIOD,GPIO_Pin_2);
        Delay(3000000);
    }
 }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!