历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-11-19 来源:eefocus

在编写流水灯程序时发现,和对之前用的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;

推荐阅读

史海拾趣

CANOPUS公司的发展小趣事

面对激烈的市场竞争,CANOPUS始终保持着创新的精神。公司不断推出新产品、新技术,以满足不同消费者的需求。同时,CANOPUS也注重品牌形象的塑造和提升,通过赞助音乐活动、举办音乐会等方式,提升品牌知名度和影响力。

这些故事只是CANOPUS公司在电子行业中发展的冰山一角。实际上,公司的发展过程充满了挑战和机遇,每一个阶段都离不开创始人的智慧和团队的努力。未来,随着科技的进步和市场的变化,CANOPUS将继续保持创新精神,为音乐爱好者带来更多优质的产品和服务。

BLACK&DECKER公司的发展小趣事

BLACK&DECKER在技术创新方面一直走在行业前列。公司不断投入研发资源,推动电动工具技术的进步。例如,1979年,BLACK&DECKER发布了第一台手提式充电吸尘器Dustbuster,这一创新产品迅速成为市场上的热销产品,并推动了整个吸尘器行业的发展。此外,BLACK&DECKER还积极参与行业标准的制定工作,通过制定严格的产品质量标准和安全规范,为整个电子行业的健康发展做出了贡献。

ADDtek公司的发展小趣事

BLACK&DECKER公司的历史可以追溯到1910年,由Alonzo G. Decker和Duncan S. Black在美国马里兰州巴尔的摩共同创立。两位创始人的初始投资来自于Black先生卖掉他的二手车所得的600美元,再加上1200美元的贷款。公司起初主要生产牛奶瓶装盖机、棉花采集机、糖果浸包机等工业用设备。然而,真正让BLACK&DECKER崭露头角的,是1916年他们发明的现代手枪钻原型。这一创新产品解决了当时德国电动工具笨重、难以操控的问题,为电动工具行业带来了革命性的变革。

BETA Transformer Technology Corp公司的发展小趣事

为了进一步扩大市场份额,BETA Transformer Technology Corp公司开始实施国际化战略。公司积极参加国际电子展览,与国际同行进行深入交流与合作。同时,BETA公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过不断拓展国际市场,BETA公司的品牌影响力和市场竞争力得到了显著提升。

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

随着全球环保意识的不断提高,BETA Transformer Technology Corp公司积极响应国家绿色发展的号召,将环保理念贯穿于产品研发、生产和销售的全过程。公司推出了一系列节能环保的变压器产品,深受客户好评。同时,BETA公司还加强了对生产废弃物的处理和回收利用,实现了资源的循环利用和减少环境污染。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

Holmes Co Inc公司的发展小趣事

面对日益增长的全球市场需求,Holmes Electronics决定实施全球化战略。他们首先在亚洲建立了生产基地,利用当地的成本优势和供应链资源,大幅提高生产效率并降低成本。随后,公司又在欧洲和美国设立了研发中心和销售网络,以更好地服务当地客户并捕捉市场机会。这一全球化战略不仅使Holmes Electronics的产品遍布全球,还增强了公司的市场响应能力和品牌影响力。

问答坊 | AI 解惑

Crossing clock domains - Flag

A flag to another clock domain If the signal that needs to cross the clock domains is just a pulse (i.e. it lasts just one clock cycle), we call it a \"flag\". The previous design usually doesn\'t work (the flag might be missed, ...…

查看全部问答>

wince 按键控制系统菜单实现问题

哪位用过ZLG7290这款芯片,我现在也在使用。 我想请教大家个问题:如何写驱动实现控制wince的系统菜单的?比如打开左下角的菜单,上下移动菜单,或者关闭任意程序等。谢谢…

查看全部问答>

我不理解这么牛B的汇编语言

IF {FALSE}         mov     r0, r4         mov     r1, #256                 ...…

查看全部问答>

编译EVC出错

orelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup ARMV4IDbg/SPLLoaderDlg.exe : fatal error LNK1120: 1 unresolved externals 开始错误是这样的 后来按照这样改 Pr ...…

查看全部问答>

EVC4.0编译出错,求助!

EVC4.0编译程序的时候,会出现Error spawning cl.exe的错误,是怎么回事啊?…

查看全部问答>

wince5.0 window media player 6.4 支持标准RTSP

要让wince5.0 window media player 6.4 支持标准RTSP,所以要写一个RTSP 的filter, 我的问题是,只要注册了这个rtsp的filter ,用media player6.4接收rtsp的流就会直接调用我这个RTSP 的filter? 还是还要修改注册表其他地方??…

查看全部问答>

直插式LED封装制程容易出现的问题与排解

  1、环氧树脂 Epoxy Resin   2、硅胶 Silicone   3、胶饼 Molding Compound   4、硅树脂 Hybrid   根据分子结构,环氧树脂大体上可分为五大类:   1、 缩水甘油醚类环氧树脂   2、 缩水甘油酯类环氧树脂   3、 缩水甘油胺 ...…

查看全部问答>

大城市VS小城市,电子工程师何去何从?

今天又遭鄙视了,之前听说泰克的春季创新论坛扩展到15个城市,本想报名泰克创新论坛了解一哈功率测量、高精度功率分析、EMI诊断等方面的测试技术呢,网上资料虽然一大堆但面对面的教学让人更易接受,不懂还可以请教泰克的专家。但是,在巡展的15个 ...…

查看全部问答>