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

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结构的指针

}

2、延时函数
以下延时函数是常用的一个通过占用CPU来达到延时效果的函数,延时不准确,但对于日常开发,多用于此。

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

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

3、系统定时器延时函数
该函数可精确定时,在一些延时要求精度较高的场合应用。

微秒延时函数:
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;     //清空计数器

}

同样调用的时候比较简单,直接:
delay_ms(1000); //精确延时1s

STM32单片机初学者编程之常用小程序--GPIO配置延时函数相关推荐

  1. keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)

    [朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...

  2. 核桃编程学python吗_学编程要趁早?对话核桃编程X支付宝 “小程序编程马拉松”三强得主...

    原标题:学编程要趁早?对话核桃编程X支付宝 "小程序编程马拉松"三强得主 来源:网络 浏览专业IT技术社区网站,创作沉浸式互动体验游戏,开发辟谣小程序......这并不是程序员大神 ...

  3. STM32单片机紫外线强度检测仪器蜂鸣器报警(程序+原理图+PCB)

    本设计: 基于STM32单片机紫外线强度检测仪器蜂鸣器报警(程序+原理图+PCB) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0023 完整下载链接: ...

  4. 微信小程序—相关配置

    目录 微信小程序介绍 什么是小程序? 小程序可以干什么? 相关资料 第一个小程序 申请帐号 测试号申请 安装开发工具 你的第一个小程序 编译预览 目录结构 JSON 配置 小程序配置 app.json ...

  5. 首页布局跟小程序如何配置Iconfont—小程序入门与实战(七)

    4-1 经过上一章节的学习我们已经搭建了项目的整个框架,雏形已成.接下来我们只需要的往里面堆东西就可以了. 设计稿网址(14天分享有效,过期的可以找我拿): https://lanhuapp.com/ ...

  6. php微擎万能门店小程序_【微擎微赞模块】万能门店小程序6.6.7完美修复版2套+小程序前端+配置教程...

    源码介绍 微赞微擎模块万能门店小程序6.6.7不限制小程序生成数量,支持多页面,预约功能等. 万能门店小程序的宗旨是:小程序设计无需您过问,签到客户后,根据客户所属行业直接选择模板,各板块点击设定不同 ...

  7. 小程序----页面配置

    文章目录 0. 小程序----全局配置 1. 页面配置文件的作用 2. 页面配置和全局配置的关系 3. 页面配置中常用的配置项 0. 小程序----全局配置 小程序----全局配置 1. 页面配置文件 ...

  8. 从0到一开发微信小程序(3)—小程序框架配置

    文章目录 其他相关文章 1.小程序框架 1.1.全局配置 1.1.1.Pages 1.1.1.1.entryPagePath 1.1.1.2.生成页面方式 1.1.2.window 1.1.3.tab ...

  9. 微信小程序之配置app.json

    微信小程序之配置app.json 本人写了一个在线扫码借书的小程序,打算分享一下心得和代码,欢迎关注,再次希望各位大佬指出不足 {"pages": ["pages/ind ...

最新文章

  1. Ckeditor通过Ajax更新数据
  2. react native release语法问题解决
  3. Exchange 数据库邮箱的修复
  4. Sentinel 规则持久化到 apollo 配置中心
  5. 城轨的两类时钟系统均同步于_基于两台SDS3000示波器同步产生“8通道”示波器...
  6. JavaScript的一些小技巧(转)
  7. sql server 群集_SQL Server 2014 –安装群集实例–分步(1/3)
  8. 龙卷风路径_关于龙卷风,看这篇文章就够了
  9. 课程体系包括哪些要素_课程建设包括哪些内容_以课程建设为抓手,促进专业团队的发展...
  10. stm32f429之多通道ADC通过DMA数据采集
  11. 信号与系统_第2章 连续系统的时域分析
  12. 微信小程序支付退款功能
  13. 餐饮企业如何在疫情考题中渡过难关?
  14. c语言中.dat是什么文件,c 盘目录下的windata.dat是什么文件 可以删吗
  15. 【每日一C之一】included与include
  16. 如何跟进团队的沟通、协作和执行?这款团队协作软件你得试试
  17. linux下的 fopen等
  18. 计算机二级msoffice操作题有哪些,计算机二级msoffice操作题
  19. 华为java 上机_华为校园招聘Java上机笔试题
  20. 【实验报告】实验五 继承的应用

热门文章

  1. PMP有用吗,PMP含金量,如何转型项目经理?
  2. IPv4与IPv6数据包格式
  3. 4.Linux基础入门
  4. mac使用office工具卡顿问题
  5. 大数据入门学习者主要分为哪几类,从业方向有哪些?
  6. 数据挖掘人员工作领域分为哪几类,各自需要掌握哪些知识?
  7. 常用Debug模式下的打印DLog
  8. matlab C 混编 --- 在MATLAB中使用c语言函数
  9. HDU - 1584 蜘蛛牌
  10. 【Atlas200】使用华为ACL库实现ResNet 推理(C++版本)