2025年STM32单片机初学者编程之常用小程序--GPIO配置&延时函数

STM32单片机初学者编程之常用小程序--GPIO配置&延时函数声明 本专题系列的博文主要是用于个人学习以及后续查阅调用 由于是这方面的初学者 所以写的比较浅陋 有喜欢的朋友可以一起学习 编程大神们请略过 1 以一个 GPIO 的初始化程序为例 以下是 GPIO 的配置 void GPIO Init 端口初始化

大家好,我是讯享网,很高兴认识大家。

声明:本专题系列的博文主要是用于个人学习以及后续查阅调用,由于是这方面的初学者,所以写的比较浅陋,有喜欢的朋友可以一起学习,编程大神们请略过。。。。。。

1、以一个GPIO的初始化程序为例,以下是GPIO的配置:

void GPIO_Init() //端口初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
//声明一个结构体变量,用来初始化GPIO

SystemInit(); //首先进行GPIO模块的时钟初始化 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //因为使用的GPIOC端口,所以使能GPIOC端口的时钟 /* 配置GPIO的模式和IO口*/ GPIO_InitStructure.GPIO_Pin=LED; //选择你要设置的IO口,这里以一个LED接口为例;这里的“LED”实际上是一个宏定义,在相应头文件中已申明所代表的含义,目的主要是便于后续修改、调整 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //设置推挽输出模式,这里的GPIO模式共有八种,分别是: GPIO_Mode_AIN模拟输入,GPIO_Mode_IN_FLOATING浮空输入, GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉输入, GPIO_Mode_Out_OD开漏输出,GPIO_Mode_Out_PP推挽输出, GPIO_Mode_AF_OD复用开漏输出,GPIO_Mode_AF_PP复用推挽输出 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //设置传输速率 GPIO_Init(GPIOC,&GPIO_InitStructure); //初始化该IO口所在的GPIO组,并指向该GPIO结构的指针 

讯享网

}

void delay(u32 i)
{
while(i–);
}

函数比较简单,只需要在相应的功能模块的“.C”文件中写好,即可直接调用,如:delay();//延时约为1s


讯享网

微秒延时函数:
void delay_us(u32 i)
{
u32 temp;
SysTick->LOAD=9i;
//设置重装数值,72MHz时;这里之所以“9
i”,是因为系统时钟在这里经过了8分频,这里是9MHz,即换算为时间就是约为1us,所以后续想要延时多少us,就直接给“i”赋值

讯享网SysTick->CTRL=0X01; //CTRL是该定时器的控制和状态寄存器,需要先使能,即就是将该寄存器最低位置1使能 SysTick->VAL=0; //VAL是当前值寄存器,需要先清零计数器 do { temp=SysTick->CTRL; //读取当前倒计数值 } while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达,若当前值计数减到0的时候,CTRL寄存器的第16位(标志位)则会置1,此时则跳出循环,该次延时完毕 SysTick->CTRL=0; //关闭计数器 SysTick->VAL=0; //清空计数器 

}

毫秒延时函数:
void delay_ms(u32 i)
{
u32 temp;
SysTick->LOAD=9000*i;
//设置重装数值,72MHz时;

SysTick->CTRL=0X01; //使能,减到0是无动作,采用外部时钟源 SysTick->VAL=0; //清零计数器 do { temp=SysTick->CTRL; //读取当前倒计数值 } while((temp&0x01)&&(!(temp&(1<<16)))); //等待时间到达 SysTick->CTRL=0; //关闭计数器 SysTick->VAL=0; //清空计数器 

}

小讯
上一篇 2025-02-05 20:04
下一篇 2025-01-08 21:04

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45257.html