• stm32跑马灯实现及蜂鸣器实验


    学习stm32已经很长时间了,打算把以前做过的一些小东西整理一下,写出来,以输出倒逼输入,让自己知道有哪些东西是一知半解的。

    跑马灯

    首先是led.h文件

    #ifndef __LED_H
    #define __LED_H
    
    void led_init(void);
    
    
    #endif

    前两行和最后一行是一个框架,防止头文件被重复加载

    然后是led.c文件

    #include "led.h"
    #include "stm32f10x.h"    //库函数头文件
    
    
    void led_init(void)
    {
        GPIO_InitTypeDef GPIO_Ini;   //C语言声明要放在最前面
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //首先要调用该函数使能IO口的时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
        
        
        GPIO_Ini.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Ini.GPIO_Pin=GPIO_Pin_5;
        GPIO_Ini.GPIO_Speed=GPIO_Speed_50MHz;
        
        
        GPIO_Init(GPIOB,&GPIO_Ini);        //第二步初始化IO口的模式,比如是输入还是输出等等
        GPIO_SetBits(GPIOB,GPIO_Pin_5);    //最后操作IO口输出高低电平
        
        GPIO_Init(GPIOE,&GPIO_Ini);        
        GPIO_SetBits(GPIOE,GPIO_Pin_5);
        
    }

    最后是main文件

    #include "stm32f10x.h"
    #include "led.h"
    #include "delay.h"
    
    
    
    int main()
    {
        delay_init();
        led_init();
        
        while(1)
        {
            GPIO_SetBits(GPIOB,GPIO_Pin_5); //设置为高电平
            GPIO_SetBits(GPIOE,GPIO_Pin_5);
            delay_ms(500);                  //延时函数可以采用小工具自动生成
            GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //设置为低电平
            GPIO_ResetBits(GPIOE,GPIO_Pin_5);
            delay_ms(500);
        }
    }

    蜂鸣器

    首先是beep.h文件

    #ifndef __BEEP_H
    #define __BEEP_H
    #include "sys.h"
    
    #define BEEP PBout(8) //蜂鸣器接口,宏定义,此处采用位操作
    void BEEP_Init(void);
    #endif

    然后是beep.c文件

    #include "stm32f10x.h" 
    #include "beep.h"
    
    void BEEP_Init(void)
    {
        GPIO_InitTypeDef GPIO_InitTy;
        GPIO_InitTy.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitTy.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitTy.GPIO_Speed = GPIO_Speed_50MHz;
        RCC_AHBPeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        
        GPIO_Init(GPIOB,&GPIO_InitTy);
        
        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
        
    }

    最后为main文件

    #include "stm32f10x.h"
    #include "led.h"
    #include "beep.h"
    #include "delay.h"
    
    
    
    int main()
    {
        delay_init();
        led_init();
        BEEP_Init();
        
        while(1)
        {
            GPIO_SetBits(GPIOB,GPIO_Pin_5); //设置为高电平
            GPIO_SetBits(GPIOE,GPIO_Pin_5);
            BEEP = 0;                       //此处为位操作,作用和GPIO_ResetBits()函数一样,将端口设置为低电平
            delay_ms(500);                  //延时函数可以采用小工具自动生成
            GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //设置为低电平
            GPIO_ResetBits(GPIOE,GPIO_Pin_5);
            BEEP=1;
            delay_ms(500);
        }
    }
  • 相关阅读:
    Java语法基础
    配置环境变量
    常用Dos命令
    Python 之 进程与进程池的创建和使用
    python之进程间通信
    低级别网络接口-socket的应用和粘包现象
    网络编程之模块的使用
    Python异常类型
    练习题
    python 的re模块与正则表达式
  • 原文地址:https://www.cnblogs.com/roscangjie/p/11618068.html
Copyright © 2020-2023  润新知