STM32 GPIO实验_交替输出高低电平

该代码示例展示了如何使用STM32F10X微控制器使PB5和PE5引脚交替输出高低电平,以固定的0.5秒周期进行切换。通过初始化GPIO端口,设置推挽输出模式,然后在主函数中控制两个引脚的状态并利用延时函数实现定时切换。
摘要由CSDN通过智能技术生成

1.实验目的:

使PB5和PE5交替输出高低电平。

以固定的周期让当PB5输出高电平时PE5输出低电平,反之当PB5输出低电平时PE5输出高电平。

2.头文件和声明子函数:延时函数用于提供固定的变化周期。

#include "stm32f10x.h"							         //包含STM32F1系列微控制器的头文件

void delay_ms(unsigned short int Number);		         //声明延时函数

3.1主函数部分1:初始化PB5和PE5引脚。


	GPIO_InitTypeDef GPIO_InitStructure;			     //定义结构体变量
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PB口时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//使能PE口时钟
	
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;	         //对PB5引脚进行设置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //频率最高50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);               //初始化引脚
	 
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;	         //对PE5引脚进行设置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //频率最高50MHz
    GPIO_Init(GPIOE, &GPIO_InitStructure);               //初始化引脚	
	

3.2主函数部分2:PB5和PE5一个置高电平(熄灭)一个置低电平(点亮),延时后翻转状态就可以看见亮灭效果,并无限循环。


  while(1)
	{
		GPIO_SetBits(GPIOB, GPIO_Pin_5);	             //PB5输出高电平
        GPIO_ResetBits(GPIOE, GPIO_Pin_5);	             //PE5输出低电平			
		delay_ms(500);                                   //延时(大约0.5s)
		GPIO_ResetBits(GPIOB, GPIO_Pin_5);	             //PB5输出低电平	
		GPIO_SetBits(GPIOE, GPIO_Pin_5);	             //PE5输出高电平
		delay_ms(500);                                   //延时(大约0.5s)
     }

4.延时函数:


void delay_ms(unsigned short int Number)                 //延时函数
{
    unsigned int i;
    while(Number--)
    {
       i=12000; while(i--);
    }
}

5.1完整代码:

#include "stm32f10x.h"							         //包含STM32F1系列微控制器的头文件

void delay_ms(unsigned short int Number);		         //声明延时函数

int main(void)                                           //主函数
{
	GPIO_InitTypeDef GPIO_InitStructure;			     //定义结构体变量
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能PB口时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);//使能PE口时钟
	
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;	         //对PB5引脚进行设置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //频率最高50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);               //初始化引脚
	 
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;	         //对PE5引脚进行设置
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //推挽输出模式
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	 //频率最高50MHz
    GPIO_Init(GPIOE, &GPIO_InitStructure);               //初始化引脚	
	
	while(1)
	{
		GPIO_SetBits(GPIOB, GPIO_Pin_5);	             //PB5输出高电平
        GPIO_ResetBits(GPIOE, GPIO_Pin_5);	             //PE5输出低电平			
		delay_ms(500);                                   //延时(大约0.5s)
		GPIO_ResetBits(GPIOB, GPIO_Pin_5);	             //PB5输出低电平	
		GPIO_SetBits(GPIOE, GPIO_Pin_5);	             //PE5输出高电平
		delay_ms(500);                                   //延时(大约0.5s)
	}
}

void delay_ms(unsigned short int Number)                 //延时函数
{
    unsigned int i;
    while(Number--)
    {
       i=12000; while(i--);
    }
}

5.2仿真实验:

仿真可以看出:PB5和PE5输出高低电平相反并。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值