历史上的今天
返回首页

历史上的今天

今天是:2024年09月13日(星期五)

正在发生

2021年09月13日 | STM8S自学笔记-005 精准延时

2021-09-13 来源:eefocus

精准延时

“精准延时”函数的使用场景是主时钟=16MHz时的情况。因为STM8S103的最高主时钟为16MHz,所以在其它情况下,延时函数会跑得相对慢一些,但并没有丧失功能。

可将下列代码添加到Drv_CLK.c的尾部,并在Drv_CLK.h中追加毫秒级延迟函数Delay_1ms的声明,即可在外部进行调用。


精准延时的代码

/**

  * @brief  Delay 1 us.

  * @param  None

  * @retval None

  */

#pragma optimize = none

void Delayus(void)

{

  asm("nop");

  asm("nop");

  asm("nop");

  asm("nop");

}


/**

  * @brief  Delay x ms.

  * @param  x: time

  * @retval None

  */

#pragma optimize = none

void Delay_1ms(uint32_t x)

{

  uint16_t i;

  while (x--)

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

      Delayus();

}


不过,需要指出,虽然这种循环型的延迟函数非常简单,但CPU在运行它时,只能干等着循环的结束,才能再去做其它事。其实,办法是有的,那就是利用定时器更新中断,只不过,这是后面要将的内容了。


使用精准延时函数的跑马灯代码

外部晶振频率为16MHz,将F_master设定为HSE,1分频。

LED_Control是LED串列的控制函数,定义见Drv_GPIO.c。


/**

  * @brief  Main program.

  * @param  None

  * @retval None

  */

void main(void)

{

  CLOCK_HSE(CLK_PRESCALER_CPUDIV1); //HSE=16MHz, F_master=HSE/1

  LED_Init(LED1 | LED2 | LED3);

  while (1)

  {

    LED_Control(LED1);

    Delay_1ms(1000);

    LED_Control(LED2);

    Delay_1ms(1000);

    LED_Control(LED3);

    Delay_1ms(1000);

  }

}

推荐阅读

史海拾趣

HB公司的发展小趣事

背景:Fritz Hartmann Gerätebau KG成立于1961年,起初专注于电子元器件的研发与生产。随着技术的不断积累和市场的逐步拓展,公司业务逐渐壮大,并更名为Hartmann Codier GmbH。这一时期,公司凭借对开关技术的深刻理解,逐步在行业内建立了良好的声誉。

发展:在初创阶段,Hartmann Codier GmbH致力于提升产品质量和技术水平,通过不断的技术创新和产品优化,逐渐在旋转编码开关和微动开关领域占据了一席之地。同时,公司也积极拓展国内外市场,为后续的快速发展奠定了坚实的基础。

Efficient Power Conversion公司的发展小趣事

作为一家技术驱动的公司,EPC公司一直致力于持续创新和产品研发。近年来,公司不断推出新的氮化镓功率半导体器件和集成电路产品,以满足市场不断变化的需求。其中,EPC公司全新推出的ePower功率级集成电路系列,为高功率密度应用提供了更高性能及更小型化的解决方案。这一系列产品在市场上获得了良好的反响,进一步巩固了EPC公司在氮化镓技术领域的领先地位。

ABCircuits公司的发展小趣事

ABCircuits公司成立之初,便专注于半导体技术的研发。在电子行业的浪潮中,公司敏锐地洞察到市场对高性能、低功耗芯片的需求,于是投入大量资源进行研发。经过数年的努力,ABCircuits成功推出了一款具有革命性的芯片,该芯片在性能上远超同行,同时功耗极低,迅速获得了市场的认可。这一技术创新为ABCircuits公司打开了新的市场领域,奠定了其在行业内的领先地位。

Crystek公司的发展小趣事

为了更好地满足客户需求和推动业务发展,Crystek公司设立了专门负责频率控制的部门——Crystek Crystals和Crystek Microwave。这两个部门分别致力于开发和制造使用石英谐振器的频率产品以及为微波行业开发频率控制和支持产品。这种专业化的分工不仅提高了公司的运营效率,也使得Crystek公司能够更好地为客户提供定制化的解决方案和优质的服务。

CINTERION公司的发展小趣事

随着汽车行业的快速发展和智能化趋势的加强,CINTERION针对汽车市场推出了专用级M2M模块。其中,AC75i和AC65i作为第六代汽车级模块,以其高度的集成性、稳定性和安全性受到了市场的广泛认可。这些模块的推出,不仅满足了汽车行业对无线通信技术的需求,也进一步巩固了CINTERION在汽车M2M市场的领先地位。

Don Connex Electronics Co Ltd公司的发展小趣事

Don Connex Electronics Co Ltd成立于上世纪90年代初,当时电子行业正处于快速发展阶段。公司的创始人李明凭借其在半导体领域的深厚技术背景,带领团队研发出了一款高性能的电源管理芯片,这款芯片在业界引起了广泛关注。该芯片以其低功耗、高效率的特性,迅速在市场上打开了局面,为公司的初创阶段奠定了坚实的基础。

问答坊 | AI 解惑

现代制动系统保养方式

子式工具组,工作简单快捷,舒适安全,且一人便可独立完成。工具组主要功用是:①测试制动液的湿沸点,确定是否应该更换。②使用独有的工具进行旧制动液的排放和新制动液的加注。③换液时,工具中采用先进的电子传感显示技术的部件,能准确有效地判 ...…

查看全部问答>

cpld课程实验

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 cpld课程实验  …

查看全部问答>

老生常谈:如何学习嵌入式--------希望能给初学者一点帮助

     最近不断有学生问我嵌入式很有意思,但是应该如何入手呢?有些学生虽然在指导下做了一些小东西,但事后却往往不知道学到了些什么!只知道似乎很有意思。那么该如何学习嵌入式呢?学习嵌入式需要哪些知识呢?    ...…

查看全部问答>

找ise foundation 10.1 的开发软件

我现在找了很久ise foundation 10.1或webpack的开发软件,有谁有的可以给我提供以下吗,我在学校,去xilinx网站下要花很大的流量,下不起,图书馆借了个光盘也不能用,哪位好心人能帮我一下,感激涕零啊!邮箱:ffxsppan@163.com…

查看全部问答>

如何使用GPRS替代RS232端口?

我在工作中使用的测量仪器原本是由PC通过RS232来控制的。现在我需要将这种测量仪器放在工地,PC仍留在室内。请问是否可以使用GPRS或其它无线通信技术来实现?我原本编写的通过RS232端口控制仪器的程序要改写吗?请高手指教,最好能够合作!…

查看全部问答>

evc4.0下怎么做才能读和写 csv文件,在线等

evc4.0下怎么做才能读和写 csv文件,我想把它考到pc机上去。…

查看全部问答>

请教

本帖最后由 paulhyde 于 2014-9-15 09:02 编辑 如果自己做的模块没有用竞赛提供的芯片,可以吗?再重新做模块还来得及吗?  …

查看全部问答>

开关电源 负载调整率

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 …

查看全部问答>

LaunchPad能烧写二进制文件么?怎么操作?用CCS

LaunchPad能烧写二进制文件么?怎么操作?用CCS…

查看全部问答>