当前位置: 首页 > news >正文

使用STM32F407xx的GPIO引脚实现跑马灯效果的详细步骤

1、使用Keil创建一个新工程

2、在弹出的对话框,填写工程的名字,例如工程名字为demo_led

3、为保存的工程,选择对应的芯片

4、为当前工程,添加相应的库函数

 

 5、若库函数添加成功,则显示当前工程目录树

6、在当前工程目录下,先创建main.c

 

7、添加头文件和设置优化等级

 

8、开始写跑马灯程序

 (1)初始化led灯
void led_init()
{//定义结构体GPIO_InitTypeDef GPIO_InitStructure1;//使能AHB1总线上指定外设的硬件时钟,其实就是对外设进行供电 (如果该外设不使用,可以关闭其硬件时钟,降低功耗)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//9 10号引脚GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;//推挽类型,Push PullGPIO_InitStructure1.GPIO_OType = GPIO_OType_PP;//不使能上下拉电阻GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_2MHz;//引脚工作速度GPIO_Init(GPIOF, &GPIO_InitStructure1);//进行初始化GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;//13 14号引脚GPIO_Init(GPIOE, &GPIO_InitStructure1);//进行初始化//初始完硬件之后,默认关闭状态GPIO_WriteBit(GPIOE, GPIO_Pin_13 |  GPIO_Pin_14, Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 |  GPIO_Pin_10, Bit_SET);}
(2) 设置延时
int32_t  delay_ms(uint32_t nms)
{uint32_t t = nms;uint32_t temp;while(t--){SysTick->CTRL = 0; 			SysTick->LOAD = 21000-1; 	SysTick->VAL = 0; 			SysTick->CTRL = 1; 			while(1){temp=SysTick->CTRL;//检测count flagif(temp & 0x00010000)break;//检测系统定时器是否意外关闭	if((temp & 0x1)==0)return -1;		}}	SysTick->CTRL = 0; 	return 0;
}
(3) 实现跑马灯效果循环
void led()
{GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_RESET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_SET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_RESET);delay_ms(100);
}
(4)源程序
#include "stm32f4xx.h"void led_init()
{//定义结构体GPIO_InitTypeDef GPIO_InitStructure1;//使能AHB1总线上指定外设的硬件时钟,其实就是对外设进行供电 (如果该外设不使用,可以关闭其硬件时钟,降低功耗)RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//9 10号引脚GPIO_InitStructure1.GPIO_Mode = GPIO_Mode_OUT;//输出模式GPIO_InitStructure1.GPIO_PuPd = GPIO_PuPd_NOPULL;//推挽类型,Push PullGPIO_InitStructure1.GPIO_OType = GPIO_OType_PP;//不使能上下拉电阻GPIO_InitStructure1.GPIO_Speed = GPIO_Speed_2MHz;//引脚工作速度GPIO_Init(GPIOF, &GPIO_InitStructure1);//进行初始化GPIO_InitStructure1.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14;//13 14号引脚GPIO_Init(GPIOE, &GPIO_InitStructure1);//进行初始化//初始完硬件之后,默认关闭状态GPIO_WriteBit(GPIOE, GPIO_Pin_13 |  GPIO_Pin_14, Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 |  GPIO_Pin_10, Bit_SET);}int32_t  delay_ms(uint32_t nms)
{uint32_t t = nms;uint32_t temp;while(t--){SysTick->CTRL = 0; 			SysTick->LOAD = 21000-1; 	SysTick->VAL = 0; 			SysTick->CTRL = 1; 			while(1){temp=SysTick->CTRL;//检测count flagif(temp & 0x00010000)break;//检测系统定时器是否意外关闭	if((temp & 0x1)==0)return -1;		}}	SysTick->CTRL = 0; 	return 0;
}void led()
{GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_SET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_RESET);GPIO_WriteBit(GPIOF, GPIO_Pin_9 , Bit_SET);delay_ms(100);GPIO_WriteBit(GPIOF, GPIO_Pin_10 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_RESET);delay_ms(100);GPIO_WriteBit(GPIOE, GPIO_Pin_13 , Bit_SET);GPIO_WriteBit(GPIOE, GPIO_Pin_14 , Bit_RESET);delay_ms(100);
}int  main()
{led_init();while(1){led();}
}

9、如果要在实体板子上运行效果需要配置以下环境

10、程序最终效果 

跑马灯


http://www.mrgr.cn/news/68557.html

相关文章:

  • Docker-软件容器平台
  • 解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题
  • Linux 使用及常用命令详解
  • 【数据集】【YOLO】【目标检测】火情、烟雾、火灾检测数据集 9848 张,YOLO火灾检测算法实战训练教程!
  • Linux grep 使用正则表达式说明
  • Hive 操作基础(进阶篇☝️)
  • Linux进程通信之管道
  • oracle数据坏块处理(三)-数据抽取插入到新表中
  • RHCE—web服务器
  • VR的左右眼渲染方法
  • 08 反射与注解
  • 【Linux】解锁操作系统潜能,高效线程管理的实战技巧
  • vue3使用easy-player播放hls监控流
  • AIGC--如何在内容创作中合理使用AI生成工具?
  • 1 天通关 AWS AI 认证,AWS AI 从业者证书最强考试指南
  • LangChain 快速入门
  • 信息安全工程师(83)Windows操作系统安全分析与防护
  • 淘宝商品详情API大揭秘:用Python开启探险之旅
  • 自动驾驶中,2d图像目标检测(分割),融合激光雷达点云信息
  • ChatGLM2-6B微调记录【1】
  • 【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(2)
  • ​解决‌win11无法打开msi安装程序包的方法‌
  • AI预测体彩排3采取888=3策略+和值012路+胆码+通杀1码测试11月8日升级新模型预测第128弹
  • 虚假新闻检测:CSV格式数据集的预处理与模型选择
  • 改变财务规划思维方式,迎接创新技术新时代
  • 数据分析的力量如何驱动商业决策和创新发展