stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)

发布于:2025-02-11 ⋅ 阅读:(23) ⋅ 点赞:(0)

一、keil的创建

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
随后点击新建(Ctrl+n),接着保存到所自己项目工程文件。.c .h都是这样操作
在这里插入图片描述

二、Proteus的简单使用

在这里插入图片描述
左上角框框内可以拖动

三、点亮LED灯代码

led.c
#include "stm32f10x.h"                  // Device header

void led_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    //GPIO_InitTypeDef GPIO_InitStructure2;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOA时钟使能
   // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB时钟使能
    
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//初始化的引脚
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//输出速度
    
    //GPIO_InitStructure2.GPIO_Pin=GPIO_Pin_0;//初始化的引脚
    //GPIO_InitStructure2.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
   // GPIO_InitStructure2.GPIO_Speed=GPIO_Speed_50MHz;//输出速度
    
    GPIO_Init(GPIOA,&GPIO_InitStructure);//pA5初始化
   // GPIO_Init(GPIOB,&GPIO_InitStructure2);//pB0初始化
}

void led_on(void)
{
    GPIO_ResetBits(GPIOA,GPIO_Pin_5);//PA输出0
   // GPIO_ResetBits(GPIOB,GPIO_Pin_0);//PB输出0
}

void led_off(void)
{
    GPIO_SetBits(GPIOA,GPIO_Pin_5);//PA输出1
   // GPIO_SetBits(GPIOB,GPIO_Pin_0);//PB输出1
}



led.h
#ifndef LED_H
#define LED_H

void led_init(void);
void led_on(void);
void led_off(void);
void mydelay(int x);
    
#endif

main.c
#include "led.h"
#include "stm32f10x.h"    // Device header
#include "7seg.h"

void mydelay(int x)
{
    int i=0;
    while(x--)
        for(i=500;i>=0;i--);
}

int main()
{
    led_init();
    seg7_init();
    
    seg7_desplay(0xC0);
    while(1)
    {
        
       led_on();
        mydelay(500);
        
        led_off();
        mydelay(500);
      /*   
        seg7_desplay(0xC0);
        mydelay(1000);
        seg7_desplay(0xF9);
        mydelay(1000);
        seg7_desplay(0xA4);
        mydelay(1000);
        seg7_desplay(0xB0);
        mydelay(1000);
        seg7_desplay(0x99);
        mydelay(1000);
        seg7_desplay(0x92);
        mydelay(1000);
        seg7_desplay(0x82);
        mydelay(1000);
        seg7_desplay(0xF8);
        mydelay(1000);
        seg7_desplay(0x80);
        mydelay(1000);
        seg7_desplay(0x90);
        mydelay(1000);
        */
    }
    //return 0;
}

这里需要注意main.c里面的延时函数需要加到led.h里面;编译器的版本需要改成5。否则在二进制程序进行方针时,LED灯可能不能够有效闪烁。

7seg.c
在这里插入图片描述
在这里插入图片描述