• STM32跑马灯


    #include "stm32f10x.h"
    #include "led.h"
    #include "delay.h"
    #include "sys.h"
    int main(void)
    {
    delay_init();
    LED_Init();
    while(1)
    {
    LED0=0;
    LED1=1;
    delay_ms(300);
    LED0=1;
    LED1=0;
    delay_ms(300);
    }

    }

    代码包括了#include "led.h"这句。使得 LED0、LED1、LED_Init 等能在 main()函数里被调用。这里我们须要重申的是。在固件库 V3.5 中,系统在启动的时候会调用 system_stm32f10x.c 中的函数 SystemInit()对系统时钟进行初始化,在时钟初始化完成之后会调用 main()函数。 所以我们不须要再在 main()函数中调用 SystemInit()函数。

    当然假设有须要又一次设置时钟系统,能够写自己的时钟设置代码。SystemInit()仅仅是将时钟系统初始化为默认状态。
    main()函数很easy,先调用 delay_init()初始化延时,接着就是调用 LED_Init()来初始化GPIOB.5 和 GPIOE.5 为输出。最后在死循环里面实现 LED0 和 LED1 交替闪烁,间隔为 300ms。上面是通过位带操作实现的 IO 操作,我们也能够改动 main()函数,直接通过库函数来操作IO 达到相同的效果.

    #include "stm32f10x.h"
    #include "led.h"
    #include "delay.h"
    #include "sys.h"
    int main(void)
    {
    delay_init(); //延时函数初始化
    LED_Init(); //初始化与LED连接的硬件接口
    while(1)
    {
    GPIO_ResetBits(GPIOB,GPIO_Pin_5); //PB5输出低,LED0=0;
    GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE5输出高,LED1=1;
    delay_ms(300); //延时300ms
    GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB5输出为高,LED0=1。
    GPIO_ResetBits(GPIOE,GPIO_Pin_5); //PE5输出为低,LED1=0
    delay_ms(300); //延时300ms
    }
    }

    将主函数替换为上面代码,然后又一次运行,能够看到,结果跟用位带操作一样的效果。

  • 相关阅读:
    oracle 增加列
    20120621 myeclipse 远程调试
    plsql 参数中in out in的区别讲解
    20120606 随笔
    MYSQL申明变量&显示变量
    arcgis for flex 地图发布服务
    arcserver 地图发布过程
    arcserver 发布地图后浏览器不更新问题
    把一个表的一列插入另一个表的空字段
    mysql运行语句时出现 FUNCTION *** does not exist
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7127950.html
Copyright © 2020-2023  润新知