## STM32

您所在的位置:网站首页 arduino小灯闪烁频率50HZ程序怎么写 ## STM32

## STM32

2024-01-20 15:17| 来源: 网络整理| 查看: 265

STM32——闪烁灯程序

单片机的闪烁灯是继点灯后的一个简单的程序,这也是每一个初学者的必经路程,也并没有我们想象的那么难,我们要相信自己。人生难得几回搏,此时不搏待何时。 ——至每一个为自己的理想而奋斗的青少年

简单介绍下开发环境,芯片类型是STM32F4,集成开发环境用的是keil5 MDK-ARM,仿真器使用JLINK。

要想成功点灯,首先我们需要确定引脚,我是用的单片机是PF9,PF10,PE13,PE14 这四个引脚。在程序中我们只要选择其中一个引脚就行了,将引脚设置为输出模式,并控制他的高低电平。这里我们先进行初始化设置:

//使能(打开)端口E的硬件时钟,就是对端口E供电 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); //使能(打开)端口F的硬件时钟,就是对端口F供电 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //初始化GPIO引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; //第9 10根引脚 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(GPIOF,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; //第13 14根引脚 GPIO_Init(GPIOE,&GPIO_InitStructure); //所有led熄灭 GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10); GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14);

初始化之后我们就开始进行while循环里的代码编写了,代码如下:

while(1) { //PF9引脚输出低电平 GPIO_ResetBits(GPIOF,GPIO_Pin_9); delay(); GPIO_SetBits(GPIOF,GPIO_Pin_9); delay(); GPIO_ResetBits(GPIOF,GPIO_Pin_10); delay(); GPIO_SetBits(GPIOF,GPIO_Pin_10); delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_13); delay(); GPIO_SetBits(GPIOE,GPIO_Pin_13); delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_14); delay(); GPIO_SetBits(GPIOE,GPIO_Pin_14); delay(); }

完整代码如下:

#include "stm32f4xx.h" static GPIO_InitTypeDef GPIO_InitStructure; void delay(void) { uint32_t i=0x2000000; while(i--); } int main(void) { //led1:PF9 led2:PF10 led3:PE13 led4:PE14 //使能(打开)端口E的硬件时钟,就是对端口E供电 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); //使能(打开)端口F的硬件时钟,就是对端口F供电 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //初始化GPIO引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10; //第9 10根引脚 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(GPIOF,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14; //第13 14根引脚 GPIO_Init(GPIOE,&GPIO_InitStructure); //所有led熄灭 GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10); GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14); while(1) { //PF9引脚输出低电平 GPIO_ResetBits(GPIOF,GPIO_Pin_9); delay(); GPIO_SetBits(GPIOF,GPIO_Pin_9); delay(); GPIO_ResetBits(GPIOF,GPIO_Pin_10); delay(); GPIO_SetBits(GPIOF,GPIO_Pin_10); delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_13); delay(); GPIO_SetBits(GPIOE,GPIO_Pin_13); delay(); GPIO_ResetBits(GPIOE,GPIO_Pin_14); delay(); GPIO_SetBits(GPIOE,GPIO_Pin_14); delay(); } }

至此,这个点灯程序就已经完成了,还是很简单的,在学习的时候确实有时候会挺枯燥的,但是我们相信自己,坚持就是胜利。加油哦~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3