STM32F103ZET6开发板实现跑马灯实验

闲的无聊!
想要学好一款芯片,控制芯片io口是必不可少的!实现stm32(正点原子精英版)完成跑马灯(led循环闪烁)实验,就是最基础的控制。我们就必须了解开发板io口模式,那么有几种模式呢?
我把他们分为输入和输出,这样会相对好理解:
1:输出模式
(1)推挽输出:可输出强高,低电平,可连接数字器件
(2)开漏输出:只可以输出强低电平,强高电平需要外部电阻拉高
(3)复用推挽输出:片内外设功能,如iic
(4)复用开漏输出:片内外设功能如MOSI,MISO等等
解释一下复用:就是在使用此io口的第二功能时的配置,也就是非通用io模式
2:输入模式
(1)模拟输入:模拟adc输入
(2)上拉输入:内部存在上拉电阻的输入
(3)下拉输入:内部存在下拉电阻的输入
(4)浮空输入:可以做KEY识别,高低电平由外部输入决定
跑马灯实验只需要上面的输出模式的推挽输出,如果说你已经配置到了基础的工程,那么现在就可以开始编写属于我们自己的工程了!
找一个配置好的基础工程就可以开始了:
在基础工程的下面新建一个HARDWARE文件夹

其他名字也可以,只是来保存自己项目的外设项目,然后进入keil5进入
在这里插入图片描述
Manage Project Items里面添加新的HARDWARE文件夹,如图标2,然后新建文件并名为为led.c与led.h保存在刚刚新建的HAREWARE里面,回到上图步骤,单机HAREWARE,点击Add File…,如图标3,找到HAREWARE里面的.c文件,添加
在这里插入图片描述
此时还缺少头文件,但是我们已经在刚刚创建了,如何让添加呢?
在这里插入图片描述
找到Options for targe ‘template’,如果你的项目不叫template,单引号内就是你自己命名的名字,找到C/C++选项卡,点击include paths,
在这里插入图片描述
新建,添加包含头文件上一级目录就行,点击ok,这样,基本框架就好了!
有的小伙伴看到历程里面led.c里面有个加号,自己的却没有,

在这里插入图片描述
在建好的led.c里面添加上#include “led.h”,编译一下问题就解决了。
我们还要弄清楚硬件连接:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
由图得,想要点亮led,我们应该输入出低电平!
如果是输出低电平,我们的推挽输出可以实现点亮,也可以设置成开漏输出,因为也可以输出低电平!
下面开始我们的代码编写!
led.h:
#ifndef LED_H //预编译
#define LED_H
#include “sys.h”//系统函数
void ledinit(void);
#endif
led.c:
#include “led.h”
void ledinit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//gpio结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOE, ENABLE);//使能时钟
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//模式选择
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//频率选择
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//端口配置
GPIO_Init(GPIOB,&GPIO_InitStructure);//端口初始化
GPIO_SetBits(GPIOB,GPIO_Pin_5);//输出高
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_Init(GPIOE,&GPIO_InitStructure);//端口初始化
GPIO_SetBits(GPIOE,GPIO_Pin_5);//输出高
}
main.c:
#include “sys.h”
#include “delay.h”
#include “led.h”
#define led0 PBout(5)
#define led1 PEout(5)
int main(void)
{
delay_init();
ledinit();
while(1)
{
led0=0;
led1=1;
delay_ms(500);//延时500ms
led0=1;
led1=0;
delay_ms(500);
}
}
如果说哪里不明白,可找溯源!
当然上面的有些地方可能不理解,可以单独下来在了解!
谢谢,闲来无事,看者勿喷!

发布了2 篇原创文章 · 获赞 4 · 访问量 1186

猜你喜欢

转载自blog.csdn.net/weixin_42271802/article/details/104328122