历史上的今天

今天是:2024年11月19日(星期二)

2019年11月19日 | STM32初学笔记---延时函数及u16、u32、u8

发布者:JoyfulJourney 来源: eefocus关键字:STM32  延时函数  u16  u32 手机看文章 扫描二维码
随时随地手机看文章

在编写流水灯程序时发现,和对之前用的51单片机所用的普通软件延时函数有所不同,51的普通软件延时函数我们一般是这样编写的:


#include

#include

#define uint unsigned int

#define uchar unsigned char

void delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

 for(j=110;j>0;j--);

}

然而我们在对STM32利用库函数进行编程时采用此延时函数则完全行不通,而是采用下面的延时函数

#include "stm32f10x.h"

void delay(u16 x)

{

 u16 i=0;

 while(x--)

 {

  i=12000;

  while(i--);

 }

}

可能也有一些博友和我一样在网上找了一些好用的代码,并顺便记了下来,这里也附带粘贴一些比较准确的软件延时函数

void delay_ms(u32 time) 

{   

        u32i=8000*time; //数值自己定义,6000~9000  

        while(i--); 

}

 

void delay_ms(u16 ms)

{

        u32 temp;

        SysTick->LOAD= 9000*ms;

        SysTick->VAL=0X00;//清空计数器

        SysTick->CTRL=0X01;//使能,减到零无动作,采用外部时钟源

        do

        { 

        temp=SysTick->CTRL;//读取当前倒计数值

        }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达    

        SysTick->CTRL=0x00;//关闭计数器   

        SysTick->VAL=0X00; //清空计数器

}

微秒级延时

void delay_us(u32 time) 

{   

        u32i=8*time;    //数值自己定义6~9

        while(i--); 

}

 

void delay_us(u32 us)

{

        u32 temp;

        SysTick->LOAD= 9*us;

        SysTick->VAL=0X00;//清空计数器

        SysTick->CTRL=0X01;//使能,减到零无动作,采用外部时钟源

        do

        { 

               temp=SysTick->CTRL;//读取当前倒计数值

        }while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达    

        SysTick->CTRL=0x00;//关闭计数器   

        SysTick->VAL=0X00; //清空计数器

}

“stdint.h”

typedef  signed          char int8_t;

typedef   signedshort     int int16_t;

typedef  signed           int int32_t;

typedef  signed       __INT64 int64_t;

 

    /* exact-widthunsigned integer types */

typedef unsigned         char uint8_t;

typedef unsigned short    int uint16_t;

typedef unsigned           int uint32_t;

typedef unsigned      __INT64 uint64_t;

typedef int32_t s32;

typedef int16_t s16;

typedef int8_t  s8;

typedef uint32_t u32;

typedef uint16_t u16;

typedef uint8_t u8;

关键字:STM32  延时函数  u16  u32 引用地址:STM32初学笔记---延时函数及u16、u32、u8

上一篇:STM32中数据类型定义 U8 U16 U32解释说明
下一篇:最后一页

推荐阅读

最近公司要搞一个智能硬件,通过APP连接硬件,发指令达到某些目的,对于从没有接触过蓝牙的小白,简直是两眼一抹黑,于是从网上找例子,找攻略,例子和代码都不是自己想要的,于是只能求助于谷歌API,拿着某翻译,一个个对着看,终于调试成功了,下面直接上思路及代码。1、从谷歌官网下载一份demo(通用的),对于任何串口,只要符合规范,这个demo都能调试...
对比汽车的过去、现在、将来,有一个明显的趋势:汽车已经成为带轮子的数据中心。在每辆汽车内部,来自安全系统、车载传感器、导航系统等的数据流量,以及对这些数据的依赖程度,都在不断迅速增长。 这在速度、容量、可靠性方面给车载网络(IVNs)带来了重大影响,其中的影响之一是,在高速低时延应用中,比如控制区域网(CAN)、FlexRay、本地互连网(LIN)、面...
作为电力电子行业的专业展会平台,PCIM Asia 2020展会汇聚了国内外电子电子领域的诸多知名企业,泰克科技已经连续多年参加,今年也不例外,泰克带来了最新的电力电子相关测试产品和解决方案,现场为客户进行演示,倾听客户的声音和需求。 第三代半导体是5G、人工智能、工业互联网等多个“新基建”领域的重要材料,也是各国半导体研究领域的热点。根据Omd...
近日,据外媒报道,加拿大初创公司Cobionix宣布,他们研制出了全球首款能注射疫苗的机器人Cobi,其能以自主、无痛且无针头方式注射疫苗。据了解,Cobi是一款能够进行肌肉注射的机器人,由一个带有药瓶储存区的机械臂和一个与患者互动的屏幕组成。人们可以通过触摸屏在系统中登记,摄像头会录入登记者的身份证或是证明其已经预约接种疫苗或接收药物的证件。...

史海拾趣

问答坊 | AI 解惑

新人报到

初学嵌入式系统,大家多多关照呀 …

查看全部问答∨

学习定时器的例程

下面的附件是我对定时器例程的分析,因为是初次学习这款ARM,所以水平有限。大家有什么好的学习方法请分享一下。…

查看全部问答∨

nios问题

今天用quartus把nios 核建立好了,只是一个最小的系统,主要结构是:一个CPU,一个UART,一个on-chip-memory,两个i/o输出,在nios下,写好了头文件,定义了地址: #defined  """""" ; ; struct  ult_32  ...…

查看全部问答∨

vx5.5 + pentium (vmware) 问题

在PC上用vmware模拟了另一台PC, 又模拟了个软驱灌了一bootrom, 现在bootrom能启动并从主机ftp取得vxWorks文件。 加载并启动成功(蓝屏上打印Starting at 0x308000...) WDB也能连上了。 问题来了,我在usrRoot里启动了一任务,循环用printf打 ...…

查看全部问答∨

求救,触摸屏下的中文输入开发需要注意什么,我的面试题

面试官给我一个星期的时间做一个报告。关于技术,成本,开发周期的。 别的不管,就说技术方面。大家帮我提一些技术上需要考虑的问题,开发的困难之处,谢谢。所有的分相送…

查看全部问答∨

【有图】STM32F103Datasheet有关的问题

看看D、D1、E、E1四个参数的公制和英制的对应。看出门道的请跟帖…

查看全部问答∨

新手,求助2812资料

本人初次接触TMS320F2812 想找些资料学习 ,希望各位大虾能够给点帮助…

查看全部问答∨

proteus与multisim仿真结果不同?

以上两个图是对同一信号发生电路的仿真,前者是proteus的,后者是multisim的,proteus完全没有产生正弦波形,其输出基本不变,是不是我选的proteus的器件模型有问题啊, 还是说proteus的仿真设置有问题?…

查看全部问答∨

看图说话系列—你能说出这些开关的名字吗

看图说话系列—你能说出这些开关的名字吗 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved