Stm32学习(一)端口的使用

Stm32学习(一)端口的使用

2023年7月14日发(作者:)

Stm32学习(⼀)端⼝的使⽤跑马灯实验1.使能端⼝(以PB,PC为例)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE); //使能 PB端⼝时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PE端⼝时钟2.初始化端⼝号GPIO_InitTypeDef GPIO_InitStructure;GPIO__Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出GPIO__Mode = GPIO_Mode_Out_PP; //推挽输出GPIO__Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO__Pin = GPIO_Pin_5; //LED1-->PE.5 推挽输出GPIO__Mode = GPIO_Mode_Out_PP; //推挽输出GPIO__Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);3.设置端⼝号的输出⾼位和输出低位GPIO_SetBits(GPIOB,GPIO_Pin_5);

GPIO_SetBits(GPIOE,GPIO_Pin_5);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOE,GPIO_Pin_5);原理:通过⾼位和低位的跳转,来达到灯的闪烁效果代码:#define LED0 PBout(5)// DS0#define LED1 PEout(5)// DS1Delay_Init(){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB ENABLE); //使能 PB端⼝时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PE端⼝时钟GPIO_InitTypeDef GPIO_InitStructure;//初始化结构体GPIO__Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出GPIO__Mode = GPIO_Mode_Out_PP; //推挽输出GPIO__Speed = GPIO_Speed_50MHz;//50MHZ的速度GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO__Pin = GPIO_Pin_5; //LED1-->PE.5 推挽输出GPIO__Mode = GPIO_Mode_Out_PP; //推挽输出GPIO__Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);}int main(){Delay_Init();delay_init();while(1){GPIO_SetBits(GPIOB,GPIO_Pin_5); //设置 GPIOB.5 输出 1,等同 LED0=1;低电压亮,⾼电压不亮GPIO_SetBits(GPIOE,GPIO_Pin_5); //设置 GPIOE.5 输出 1,等同 LED1=1;delay_ms(500);GPIO_ResetBits(GPIOB,GPIO_Pin_5);//设置 GPIOB.5 输出 0,等同 LED0=0;GPIO_ResetBits(GPIOE,GPIO_Pin_5);//设置 GPIOE.5 输出 0,等同 LED0=0;delay_ms(500);}}以头⽂件的⽅式来写led.h#ifndef __LED_H#define __LED_H#include "sys.h"//LED 端⼝定义#define LED0 PBout(5)// DS0#define LED1 PEout(5)// DS1void LED_Init(void);//初始化 #endifled.c#include "led.h"//初始化 PB5 和 PE5 为输出⼝.并使能这两个⼝的时钟

//LED IO 初始化ALIENTEK 精英 STM32F103 V1 开发板教程STM32F1 开发指南(精英板-库函数版)void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能 PB,PE 端⼝时钟GPIO__Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出GPIO__Mode = GPIO_Mode_Out_PP; //推挽输出GPIO__Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出⾼GPIO__Pin = GPIO_Pin_5; //LED1-->PE.5 推挽输出GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5); /PE.5 输出⾼}main.c#include "led.h"#include "delay.h"#include "sys.h"//ALIENTEK 精英 STM32 开发板实验 1//跑马灯实验

int main(void){delay_init(); //延时函数初始化

LED_Init(); //初始化与 LED 连接的硬件接⼝while(1){ LED0=0;

LED1=1;delay_ms(300); //延时 300msLED0=1;LED1=0;delay_ms(300); //延时 300ms}}⾃⼰的代码:led.h#ifndef __LED_H#define __LED_H#include "sys.h"void LED_Init(void);#endifled.c#include "led.h"#include "stm32f10x.h"void LED_Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); GPIO__Pin=GPIO_Pin_5; GPIO__Mode=GPIO_Mode_Out_PP; GPIO__Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); GPIO__Pin=GPIO_Pin_5; GPIO__Mode=GPIO_Mode_Out_PP; GPIO__Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOE,&GPIO_InitStructure);}main.c#include "stm32f10x.h"#include "led.h"#include "delay.h"int main(void) {

LED_Init(); delay_init(); while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_5); GPIO_SetBits(GPIOE,GPIO_Pin_5); delay_ms(300); GPIO_SetBits(GPIOB,GPIO_Pin_5); GPIO_ResetBits(GPIOE,GPIO_Pin_5); delay_ms(300); } }

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689331621a231106.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信