历史上的今天
返回首页

历史上的今天

今天是:2025年08月20日(星期三)

正在发生

2018年08月20日 | STM32 SysTick滴答时钟分析

2018-08-20 来源:eefocus

利用系统sysTick()时钟产生延时函数Delay_ms()的分析

SysTick 定时器, SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从
RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在 SysTick 控制及状态寄存器中的使能位清除,就永不停息。 sysTick时钟来自系统时钟的8倍频。

一般作用于操作系统的节拍,此处我们可以依据此定时器作为延时函数。

/**

  * @brief  Inserts a delay time.

  * @param  nTime: specifies the delay time length, in milliseconds.

  * @retval None

  */

void Delay(__IO uint32_t nTime)

  TimingDelay = nTime;

 

  while(TimingDelay != 0);

}

 

/**

  * @brief  Decrements the TimingDelay variable.

  * @param  None

  * @retval None

  */

void TimingDelay_Decrement(void)

{

  if (TimingDelay != 0x00)

  { 

    TimingDelay--;

  }

}

 

/**

  * @brief  This function handles SysTick Handler.

  * @param  None

  * @retval None

  */

void SysTick_Handler(void)

{

TimingDelay_Decrement();

}

 

1.      // SystemFrequency / 1000       1ms中断一次  

2.     // SystemFrequency / 100000     100ms中断一次  

3.     // SystemFrequency / 1000000    1中断一次

SysTick_Config(SystemCoreClock / 1000)  延时1ms时需要加上此局


补充: 粗略微秒级别延时函数


void delay_us(u16 time)

{

u16 i= 0;

while(time--)

{

i=105;  //此处数值可以依据不同的晶振自行设置(我的频率是72M   此处数值适用于1ms以下的us级延时,需要毫秒级延时可以使用SysTick定时器更加准确) 

while(i--);

}

}




推荐阅读

史海拾趣

Chip Supply Micro Devices公司的发展小趣事

为了进一步扩大市场份额,Chip Supply Micro Devices制定了国际化战略。公司积极开拓海外市场,通过参加国际电子展会、建立海外销售网络等方式,将产品推向全球。同时,公司还针对不同国家和地区的市场需求,推出了定制化的产品解决方案。这些努力使得Chip Supply Micro Devices在国际市场上获得了良好的口碑和业绩。

FOCI Fiber Optic Communications Inc公司的发展小趣事

为了进一步扩大市场份额,Chip Supply Micro Devices制定了国际化战略。公司积极开拓海外市场,通过参加国际电子展会、建立海外销售网络等方式,将产品推向全球。同时,公司还针对不同国家和地区的市场需求,推出了定制化的产品解决方案。这些努力使得Chip Supply Micro Devices在国际市场上获得了良好的口碑和业绩。

FDI [Future Designs , Inc.]公司的发展小趣事

作为一家有社会责任感的企业,FDI公司始终关注社会公益事业。公司积极参与扶贫、教育、环保等领域的公益活动,为社会做出了积极贡献。同时,FDI还设立了奖学金和助学金,鼓励和支持年轻人投身电子科技事业。这些举措不仅提升了公司的社会形象,也为其赢得了广泛的赞誉。

全鹏(CHAMPION)公司的发展小趣事

在2003年,全鹏公司成为巴西Coletek集团的一员,开始了其在南美洲市场的征程。起初,全鹏在巴西设立了提供系统组装所需机壳、键盘、鼠标、喇叭等配件的组装工厂,以满足当地市场的初步需求。随着业务的不断扩大,全鹏在2004年与当地市政府合作,规划并建设了一座总厂房面积达8000平方公尺的新工厂,配置了六条组装生产线和两条印刷生产线,以及一个发货仓库。这座新工厂迅速成为全鹏在巴西市场的发货中心,推动了全鹏在当地的业务增长。

艾华集团(AISHI)公司的发展小趣事

1985年,艾立华和王安安怀揣着3700元的全部家当,毅然决然地踏上了创业之路。他们租下了两间不到50平方米的废弃小平房,与几名工人一起,手工制作铝电解电容器。由于资金、技术和市场的限制,艾华集团最初只能接一些其他企业不愿意做的、用量很少但又刚需的项目。然而,即便是在这样的困境中,艾立华和王安安也始终坚持对产品品质的精益求精,他们深知,只有高品质的产品才能在市场上立足。

ELNA(依娜)公司的发展小趣事

ELNA公司的故事始于1940年代,当时该公司推出了其第一台缝纫机。这款缝纫机以其精湛的工艺和卓越的性能迅速在市场上崭露头角。ELNA凭借对品质的坚持和对技术的不断创新,逐渐在缝纫机行业树立了良好的口碑。

随着业务的扩展,ELNA开始涉足电子领域,并逐步将其在机械制造和精密加工方面的技术优势应用到电子产品中。这一转变为公司未来的发展奠定了坚实的基础。

问答坊 | AI 解惑

自恢复保险使用心得

1,现在市场上有除了瑞侃之外的JK系列,可以完全互换; 2,我接触的主要有两种电压规格60V和250V,交直流均可以用,指的是击穿电压; 3,额定电流是在一定的条件下给出的,如果要求工作在较宽的温度范围,应该留有一定的裕量,一般可以取1.5-2 ...…

查看全部问答>

uclinux jedce_probe探测ID,变成flash的内容

Flash:两片SST39VF3201 ,一片挂CS0:地址0x80000000 一片挂CS1:地址0x81000000 使用jecdec探测 static struct map_info lpc24xx_map[2] = { {         .name =                \ ...…

查看全部问答>

运行CETK时出现的问题 0x00000000”指令指引的“0x00000000”内存,该内存不能为“read”!

如题!用CETK调试驱动时,cetest.exe出现上述问题 。看了网上对这类问题的说法五花八门的,也不知道问题出在哪里,设备端clientSide.exe运行是正常的!…

查看全部问答>

猎头职位:多媒体开发~上海多个职位

汽车音响高级软件工程师 职位描述: 汽车音响嵌入式软件开发 职位要求: -电子工程或相关专业本科以上学历; -2-3年以上汽车电子相关工作经验; -熟悉嵌入式,单片机开发,有独立的开发能力; -熟悉汇编语言及C语言; -熟悉汽车总线控制 ...…

查看全部问答>

无法加载流驱动

各位高手: 本人新手,所用设备是pocket pc 2003,在PB5.0下写完了一个测试驱动flashtest.dll,编辑注册表,注册表中Dll,Prefix,Order和Index字段都设置好了,DLL文件放在\\windows目录下,重启后,pocket pc 2003中注册表字段都在,但device.exe ...…

查看全部问答>

如何开发内核流驱动程序?

最近一直在看DDK中的MSVAD,想开发虚拟声卡驱动。都说看DDK,但是看的不知所云,一些概念不清楚,如mixer,MixerMute,Adapter,Topology,Miniport,还有端口等等一些概念,请问这些东西是关于什么的?哪里有相关的资料看? 小弟跪求帮助!!!! ...…

查看全部问答>

关于ADC0809与AT89S51接口程序中的一条指令的疑问,请大家帮帮忙~

   ……       MOV DPTR  #0FEF8H   ;指向ADC0809首地址          MOVX @DPTR , A      ;启动A/D转换         ...…

查看全部问答>

请问专家,每个厂家的MAC地址是怎么规定的?

最近研究的一个课题涉及到MAC地址。世界上的每个网卡都有一个独有的MAC地址,我想知道是不是有什么组织向生产网卡的这些厂家分配网卡地址?他们分配的原则是什么?有没有像IP地址分类一样,MAC地址也有一些分类呢?…

查看全部问答>

在用TI的OMAP35xx系列产品,性能不够怎么办

之前遇到很多朋友在用TI的OMAP3530及OMAP3515等Sitara相关产品。他们开发了很多优秀的产品,如:KTV点播产品,大型游戏机等。最近有朋友问我,“David,我们使用OMAP3530开发的产品,觉得非常不错,可是我们现在有一个担心,要是我们将来想在产品上 ...…

查看全部问答>