STM32——点灯
单片机的点灯就相当于学习C语言的Hello World了,这也是每一个初学者的必经路程,也并没有我们想象的那么难,我们要相信自己。毕竟书山有路勤为径,学海无涯苦做舟。
——至每一个为自己的理想而奋斗的青少年
简单介绍下开发环境,芯片类型是STM32F103VET6,集成开发环境用的是keil5 MDK-ARM,仿真器使用JLINK。
要想成功点灯,首先我们需要确定引脚,我是用的单片机是PB0,PB1,PB5 这三个引脚。在程序中我们只要选择其中一个引脚就行了,这里我们使用的是PB0,GPIO_PIN_1,将引脚设置为输出模式,并控制他的高低电平。这里我们先进行初始化设置:
//使能(打开)端口B的硬件时钟,就是对端口B供电
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
//初始化GPIO引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //第1根引脚
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT; //输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出,增加输出电流能力。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//高速响应
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //没有使能上下拉电阻
GPIO_Init(GPIOB,&GPIO_InitStructure);
再控制单片机的高低电平,代码如下:
//PB1引脚输出高电平
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay();
//PB1引脚输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
delay();
这里我们使用到了一个delay延时函数,代码如下:
void delay(void)
{
uint32_t i=0x8000000;
while(i--);
}
最后总的代码如下:
#include "stm32f10x.h"
static GPIO_InitTypeDef GPIO_InitStructure;
void delay(void)
{
uint32_t i=0x8000000;
while(i--);
}
int main(void)
{
//使能(打开)端口B的硬件时钟,就是对端口B供电
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
//初始化GPIO引脚
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //第1根引脚
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT; //输出模式
// GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出,增加输出电流能力。
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//高速响应
// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //没有使能上下拉电阻
GPIO_Init(GPIOB,&GPIO_InitStructure);
while(1)
{
//PB1引脚输出高电平
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay();
//PB1引脚输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
delay();
}
}
至此,这个点灯程序就已经完成了,还是很简单的,在学习的时候确实有时候会挺枯燥的,但是我们相信自己,坚持就是胜利。加油哦~