一、创建项目
新建一个文件夹,打开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,F10
GPIO_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文章来源:https://www.toymoban.com/news/detail-715977.html
#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; // 设置当前数值寄存器的值为0
SysTick->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就可以全亮然后全灭一直循环文章来源地址https://www.toymoban.com/news/detail-715977.html
到了这里,关于手把手教你编写跑马灯——STM32的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!