历史上的今天
返回首页

历史上的今天

今天是:2024年09月07日(星期六)

2020年09月07日 | STM8,延时函数

2020-09-07 来源:eefocus

照搬原子哥的代码:http://www.openedv.com/posts/list/17347/htm

原子哥的教程有比较详细的注释和网友回复,这里仅作记录


这是基于IAR的,原子哥的帖子下面有网友回复的STVD的

main.c

#include "stm8l15x_conf.h"

volatile u8 fac_us=0;

void delay_init(u8 clk)
{
  if(clk>16)fac_us=(16-4)/4;
  else if(clk>4)fac_us=(clk-4)/4;
  else fac_us=1;
}

void delay_us(u16 nus)
{
  __asm(
"PUSH A          n"    //1T,压栈
"DELAY_XUS:      n"
"LD A,fac_us     n"    //1T,fac_us加载到累加器A
"DELAY_US_1:     n"
"NOP             n"    //1T,nop延时
"DEC A           n"    //1T,A--
"JRNE DELAY_US_1 n"    //不等于0,则跳转(2T)到DELAY_US_1继续执行,若等于0,则不跳转(1T).
"NOP             n"    //1T,nop延时
"DECW X          n"    //1T,x--
"JRNE DELAY_XUS  n"    //不等于0,则跳转(2T)到DELAY_XUS继续执行,若等于0,则不跳转(1T).
"POP A           n"    //1T,出栈
);
}

void delay_ms(u32 nms)
{
  u8 t;
  if(nms>65)
  {
    t=nms/65;
    while(t--)delay_us(65000);
    nms=nms%65;
  }
  delay_us(nms*1000);
}

void Sysclk_Init(void)

{

 //HSI内部时钟,0分频,16MHZ

  CLK_HSICmd(ENABLE);
  CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);   
  CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);

}

void main(void)
{
  Sysclk_Init();
  LED_Init();
  //Uart1_Init();
  delay_init(16);  //参数16为内部时钟频率
 
  while (1)
  {
    GPIO_ToggleBits(LED1_Port, LED1_Pin);
    delay_ms(15);
  }
}

 

注1:之前用定时器2延时,每1s串口打印信息一次,用 调试助手看的时间戳会差10ms左右,以为 是我写的定时器配置的有问题,用了上面的延时之后发现是一样的,不知道是不是执行一句printf();需要10ms。


注2:上面的延时不知道怎么用示波器测量,所以就测量了下 反转LED的频率,发现延时15ms的情况下,测量出来的一个周期是29.7ms,延时应该算是准确的吧。


推荐阅读

史海拾趣

Harvatek Corporation公司的发展小趣事

背景:成立于1975年的Hantronix公司,自诞生之初便专注于为工业、医疗市场的多元化客户群提供LCD显示解决方案。在那个电子显示技术刚刚起步的年代,Hantronix凭借其前瞻性的市场洞察力和技术积累,迅速在行业中站稳脚跟。

发展:公司初期便明确了其产品定位,即专注于高品质、高性能的LCD显示产品,以满足工业控制和医疗设备对显示精度、稳定性和耐用性的严苛要求。通过不断的技术研发和产品优化,Hantronix逐渐在市场中建立了良好的口碑。

AAC [American Accurate Components]公司的发展小趣事

随着业务的不断拓展,AAC公司意识到美国市场的巨大潜力。于是,在1996年,AAC决定在美国设立分公司,专门负责美国市场的销售。与此同时,为了满足不断增长的市场需求,AAC还在深圳设立了美欧电子有限公司,专门批量生产手机用讯响器。这一系列的举措使得AAC的产品线更加丰富,产能也得到了大幅提升。

CT [ Central Technologies ]公司的发展小趣事

CT公司成立于电子行业的黄金时期,起初只是一个小型研发团队,专注于研发新型半导体技术。创始人凭借对技术的敏锐洞察和不懈追求,带领团队攻克了一个又一个技术难题。然而,资金短缺、市场竞争激烈以及技术迭代的快速性给初创期的CT公司带来了巨大的挑战。公司多次面临生死存亡的边缘,但创始人始终坚持技术创新的初心,不断寻求合作伙伴和投资,逐渐在市场中站稳了脚跟。

ACE [ACE Technology Co., Ltd.]公司的发展小趣事

随着国内市场的饱和,CT公司开始将目光投向国际市场。公司制定了一系列国际化发展战略,包括在海外设立研发中心、拓展销售渠道以及与国际知名企业建立战略合作关系等。通过这些举措,CT公司的产品和服务逐渐渗透到全球范围内,公司的国际影响力不断增强。

Antiference公司的发展小趣事

面对日益激烈的市场竞争,Antiference公司深知单打独斗难以取得长久发展。因此,公司积极寻求与其他企业和研究机构的合作,共同推动电磁干扰抑制技术的创新与发展。通过合作创新,Antiference不仅提升了自身的技术实力和市场竞争力,还推动了整个行业的进步和发展。


这些故事基于电子行业的一般情况和趋势构建,旨在展示一个虚构的公司在发展过程中可能遇到的挑战和机遇。每个故事都围绕Antiference公司的不同发展阶段和关键事件展开,旨在呈现一个全面而真实的发展画卷。

BEKA Associates Ltd公司的发展小趣事

随着全球电子市场的不断发展,BCD Semi(Diodes)积极寻求国际化拓展的机会。公司通过与国外知名企业的合作,成功进入了多个海外市场。在国际市场上,BCD Semi凭借其高品质的产品和专业的服务,赢得了客户的信赖和支持。同时,公司还积极参加国际电子展会和交流活动,与全球同行进行深入的交流与合作,不断提升自身的国际影响力。

问答坊 | AI 解惑

MOXA PCI卡简易安装测试向导

适用于MOXA品牌PCI非智能型多串口卡。QQ:939337901…

查看全部问答>

出租车多功能计价器

谁有出租车多功能计价器中的报警功能如何设计源程序?急用啊!!!…

查看全部问答>

各位在电子大赛过后是否有遗憾的事?

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 问了一个师兄,他参加过一次全国电子设计大赛,但是由于输出射极跟随器没有做好,没有到省三等 大家是否有类似的遗憾?  …

查看全部问答>

【藏书阁】数字电表检测技术

本书系统地介绍直流和交流数字电压表、数字电流表、数字欧姆表、数字多用表、标准电压(电流)源、多功能标准原(多功能校准器)等数字式智能式电轰的电路结构、技术特性、使用维修、检定方法和检测技术。本书重点论述了各种数字电表的测量原理、误差分 ...…

查看全部问答>

跳槽不要犯的十个错误

跳槽总不是件容易的事情。以下总结了千万不能犯的十条跳槽策略:     1.在没有作深刻反省的情况下不要在另外一个工作领域寻求出路     任何事情都应该三思而后行。确定你不是进入到了某个跟以前一样不适合你的工作领域。多 ...…

查看全部问答>

LM317调不了压!?

加了三极管的LM314调压电路无论怎么调节滑阻输出电压都是1.25V到底是什么原因啊!!…

查看全部问答>

修改了WINCE6.0(VS2005)的编译选项(指的是工程的编译选项---如使能KITL/禁止KITL)如何快速编译?直接SYSGEN?

修改了WINCE6.0(VS2005)的编译选项(指的是工程的编译选项---如使能KITL/禁止KITL)如何快速编译?直接SYSGEN?…

查看全部问答>

比较下列可移动存储器的性能,并说说发展前景 急!!

软盘    可读写光盘    优盘(闪存)   可移动硬盘 从以下面比较 读写速度比较 容量          耐用性       价格等       市场&nbs ...…

查看全部问答>

嵌入式开发群6462005

嵌入式开发群6462005…

查看全部问答>

初学嵌入式,应从何处着手?

眼下打算学习嵌入式,但是不知道从哪里开始学习,求前辈指导…

查看全部问答>