2、STM32点亮LED灯 |
您所在的位置:网站首页 › 人偶制作过程怎么写 › 2、STM32点亮LED灯 |
STM32寄存器和库函数点灯
一、寄存器操作1、新建工程,新建一个目录存放以后所有的工程stmproject,在这个目录下新建文件夹寄存器点灯,文件名为LED。2、新建文件main.c并双击source group文件夹添加进去3、添加启动文件,取官方固件库中根据FLASH大小选择型号,我选大容量hd4、编写main程序通过寄存器控制I/O口输入输出点灯使能时钟配置端口寄存器,再通过端口寄存器输出数据
总结
二、库函数点灯1 建立库函数工程模板2 新建库函数点灯工程3 调用库函数编写程序点亮4 程序升级
一、寄存器操作
1、新建工程,新建一个目录存放以后所有的工程stmproject,在这个目录下新建文件夹寄存器点灯,文件名为LED。
接下来选择所用的软件包,之前安装软件时安装的,选择对应型号即可。
此时就可以把程序下载到芯片里,(程序下载见我第一篇文章),此时就可以看到两个等交替亮灭。 4 程序升级上述程序可以达到要求,但是可移植性和查看性不强,可以把GPIO端口、引脚、时钟和控制灯亮灭的置位复位函数都写成宏定义,具体代码如下: led.h #ifndef __LED_H #define __LED_H #include "stm32f10x.h" //定义两个灯的端口、引脚和时钟,LED0是PB5,LED1是PE5 #define LED_0_PIN GPIO_Pin_5 #define LED_0_PORT GPIOB #define LED_0_CLK RCC_APB2Periph_GPIOB #define LED_1_PIN GPIO_Pin_5 #define LED_1_PORT GPIOE #define LED_1_CLK RCC_APB2Periph_GPIOE //用LED(ON/OFF)控制两灯亮灭 #define ON 1 #define OFF 0 #define LED0(x) if (x) GPIO_ResetBits(LED_0_PORT,LED_0_PIN);\ else GPIO_SetBits( LED_0_PORT,LED_0_PIN); #define LED1(x) if (x) GPIO_ResetBits(LED_1_PORT,LED_1_PIN);\ else GPIO_SetBits( LED_1_PORT,LED_1_PIN) ; void LED_Init(void); //声明初始化函数 #endifled.c #include "led.h" void LED_Init(void) { //实例化配置GPIO模式和速度结构体 GPIO_InitTypeDef GPIO_InitStruct; //使能两灯的时钟 RCC_APB2PeriphClockCmd(LED_0_CLK, ENABLE); RCC_APB2PeriphClockCmd(LED_1_CLK, ENABLE); //配置LED0引脚为推挽输出,速度为50MHz GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin = LED_0_PIN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //调用GPIO初始化函数,对LED0端口按上面配置初始化 GPIO_Init(LED_0_PORT, &GPIO_InitStruct); //配置LED1引脚为推挽输出,速度为50MHz GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Pin = LED_1_PIN; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //调用GPIO初始化函数,对LED1端口按上面配置初始化 GPIO_Init(LED_1_PORT, &GPIO_InitStruct); }main.c #include "stm32f10x.h" #include "led.h" //一个简单的延时函数 void Delay( uint32_t count) { for(;count!=0;count--); } int main() { //调用初始化函数 LED_Init(); //两个灯交替亮灭 while(1) { LED0(1); LED1(0); Delay(0xFFFFF); LED0(0); LED1(1); Delay(0xFFFFF); } } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |