历史上的今天
今天是:2025年04月11日(星期五)
2019年04月11日 | STM32F1x系列——跑马灯实验-库函数
2019-04-11 来源:eefocus
今天根据网上的教程实现了STM32F1系列单片机的跑马灯实验,首先主要分为三个步骤:
(1)使能IO口时钟,调用函数RCC_APB2PeriphClockCmd();不同的IO口,调用的使能时钟不一样
(2)初始化IO口模式。调用函数GPIO_Init();
(3)操作IO口,输出高低电平。GPIO_SetBits();GPIO_ResetBits();
新建一个样板工程,在工程添加文件夹HAREWARE,并在文件夹添加LED(名字自取)的.c和.h文件,按照上述的步骤,依次添加步骤。
LED.h:
#ifndef __LED_H_
#define __LED_H_
void LED_Init(void) ; //初始化
#endif
LED.c:
#include "LED.h"
#include "stm32f10x.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStr ;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); //GPIOD
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //GPIOA
GPIO_InitStr.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出
GPIO_InitStr.GPIO_Pin = GPIO_Pin_2 ;
GPIO_InitStr.GPIO_Speed = GPIO_Speed_50MHz ;
GPIO_Init(GPIOD,&GPIO_InitStr) ;
GPIO_SetBits(GPIOD,GPIO_Pin_2) ; //设置高电平
GPIO_InitStr.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出
GPIO_InitStr.GPIO_Pin = GPIO_Pin_8 ;
GPIO_InitStr.GPIO_Speed = GPIO_Speed_50MHz ;
GPIO_Init(GPIOA,&GPIO_InitStr) ;
GPIO_SetBits(GPIOA,GPIO_Pin_8) ; //设置高电平
}
在main函数中,执行操作,对LED设置高低电平,让其闪烁,并且加上延时函数:
#include "stm32f10x.h"
#include "LED.h"
#include "delay.h"
int main(void)
{
delay_init();
LED_Init();
while(1)
{
GPIO_SetBits(GPIOD,GPIO_Pin_2) ; //高电平 熄灭
GPIO_SetBits(GPIOA,GPIO_Pin_8) ;
delay_ms(500) ;
GPIO_ResetBits(GPIOD,GPIO_Pin_2) ; //低电平 点亮
GPIO_ResetBits(GPIOA,GPIO_Pin_8) ;
delay_ms(500) ;
}
}
就这样,基于STM32F1x系列单片机的简单跑马灯实验便做好了,接下来继续学习STM32F1x系列其他知识,加油!
史海拾趣
|
我在一个项目设计中用到E2PROM存储,用的是atmel的28c64系列,同样的电路,用28C64可以保存下来上次断电前的输入内容,但是用到26C64B就无法保存,有谁能告诉我这是什么原因不?… 查看全部问答> |
|
快过年了,有些人也走了,公司显得有点冷清。 仔细看过去,研发人员还是一直的忙碌,生产维护的也在埋头苦干,那么那些、财务、行政等后勤人员,都在干什么呢?按理说年底,他们的事情很少,那他们来上班,都在干什么事情?若没事情,还不如让他 ...… 查看全部问答> |
|
Quartus II 9.0中用模块化进行设计,使用ROM做存储器,为什么编译老是在ROM这块出错? Quartus II 9.0中用模块化进行设计,使用ROM做存储器,为什么编译老是在ROM这块出错。我设置的ROM是6位地址输入,24位数据输出,同时还指定好了MIF文件,但是连接好原理图后,编译老是提示与ROM输出的线出错,即Error: Port \"G2AN\" of type 74138 ...… 查看全部问答> |




