stm32基础(keil创建、Proteus仿真、点亮LED灯,7段数码管)
一、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