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

手把手教你编写跑马灯——STM32

一、创建项目

新建一个文件夹,打开KeiL,projiece-----new vision projection

 给文件命名(随便取)

 根据自己开发板的信号选择对应的型号

 在刚才创建的文件夹里面新建一个main.c文件

 双击source group 1,点击main.c,点击add

 添加头文件

 二、编写代码

led.c

#include "led.h"
#include <stm32f4xx.h>
//初始化小灯
void LED_init(void)
{GPIO_InitTypeDef GPIO_InitStruct;//定义结构体//1.Enable the GPIO AHB clock,使能时钟GPIOx,RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOE, ENABLE);//2.Configure the GPIO pin(s),配置GPIO引脚GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;	//led0和led1对应的IO口GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;			//普通输出模式GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;			//推挽输出GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;			//上拉GPIO_Init(GPIOF,&GPIO_InitStruct);					//初始化GPIOF9,F10GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;	//led3和led4对应的IO口GPIO_Init(GPIOE,&GPIO_InitStruct);//3.输出高电平GPIO_SetBits(GPIOF,GPIO_Pin_9);GPIO_SetBits(GPIOF,GPIO_Pin_10);GPIO_SetBits(GPIOE,GPIO_Pin_13);GPIO_SetBits(GPIOE,GPIO_Pin_14);}

main.c

#include <stm32f4xx.h>
#include "led.h"void delay(void)
{int a = 0xffffff;while(a--);}void delay_us(uint32_t nus)
{uint32_t temp;	 SysTick->CTRL = 0; // 关闭系统定时器SysTick->LOAD = nus*21; //设置重装置寄存器的值,设置计数值SysTick->VAL = 0; // 设置当前数值寄存器的值为0SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能定时器do{temp=SysTick->CTRL;}while((temp&0x01)&&!(temp&(1<<16)));			//等待时间到达 SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; 		//关闭计数器SysTick->VAL =0X00;    }void delay_ms(int nms)   //毫秒
{uint32_t m,n;m = nms/500;n = nms%500;while(m--){SysTick->LOAD = (SystemCoreClock/8/1000) * 500;		//定时时间SysTick->CTRL |= 1;							//开启定时器,开始计数while((SysTick->CTRL & (1<<16)) == 0);		//等待定时时间到SysTick->CTRL &=~1;							//关闭定时器}if(n){SysTick->LOAD = (SystemCoreClock/8/1000) * n;		//定时时间SysTick->CTRL |= 1;							//开启定时器,开始计数while((SysTick->CTRL & (1<<16)) == 0);		//等待定时时间到SysTick->CTRL &=~1;							//关闭定时器}	
}int main(void)
{LED_init();while(1){GPIO_ResetBits(GPIOF,GPIO_Pin_9);GPIO_ResetBits(GPIOF,GPIO_Pin_10);GPIO_ResetBits(GPIOE,GPIO_Pin_13);GPIO_ResetBits(GPIOE,GPIO_Pin_14);delay_ms(500);GPIO_SetBits(GPIOF,GPIO_Pin_9);GPIO_SetBits(GPIOF,GPIO_Pin_10);GPIO_SetBits(GPIOE,GPIO_Pin_13);GPIO_SetBits(GPIOE,GPIO_Pin_14);delay_ms(500);}return 0;
}

led就可以全亮然后全灭一直循环

http://www.xdnf.cn/news/795169.html

相关文章:

  • CSS【导航栏】
  • 数据挖掘的10大算法我用大白话讲清楚了,新手一看就懂
  • 上岸必看:C++ 24校招/25实习求职指南
  • AI大模型的企业级部署策略:私有化vs云端的成本效益分析
  • MPLS-EVPN笔记详述
  • 什么浏览器好用稳定速度快?
  • HttpServletResponse对象
  • 电脑虚拟内存不足原因解析与解决办法
  • 5 个最佳网络模拟器:Cisco Packet Tracer、Boson NetSim、GNS3、VIRL、EVE-NG
  • sourceforge.net专题:空间申请使用、绑定域名、上传文件安装程序
  • Fedora 17 安装 完全 指南
  • 资源链接网址
  • 6、ExtJs——Ext基础架构--认识Ext.js和Ext-more.js
  • 数据分析项目有哪些实施流程?揭示从数据准备到解决方案全过程
  • 太强了!三种方案优化 2000w 数据大表!
  • 用百度搜索SB,为什么是google排第一?
  • 回收站占用的是C盘吗?探究文件回收站的存储机制
  • 网络电视服务器是什么系统,网络视频直播系统
  • 网线的制作方法
  • (转)什么时候调用Dialog的dismiss()方法
  • <Linux开发> linux开发工具-之-I2C TOOLS工具使用
  • 盗号不是只有黑客才能到,一枚普通的Python程序员也可以!
  • 正规好用的电脑端抽奖软件有哪些?
  • 实验吧-密码学(三)
  • 教师一定要看的15部电影
  • LINUX下的SD卡分区
  • 基于ASP.NET的教学管理系统设计与实现(源码+数据库+部署)
  • 计算机提示d3dx9_43.dll丢失怎么解决,全面解析多种解决方法
  • WEB2.0的特点、原则和设计模式
  • 基于matlab基本放大电路仿真,基于MATLAB的控制器仿真