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输出高低电平相反并。
文章来源:https://www.toymoban.com/news/detail-721041.html
文章来源地址https://www.toymoban.com/news/detail-721041.html
到了这里,关于STM32 GPIO实验_交替输出高低电平的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!