历史上的今天
返回首页

历史上的今天

今天是:2025年02月25日(星期二)

正在发生

2020年02月25日 | STM32-systick系统定时器

2020-02-25 来源:eefocus

systick系统定时器


系统定时器存在内核中,是24位的定时器,只能向下递减,嵌套在NVIC中

counter 在时钟的驱动下 在reload的初值开始向下递减计时到0,产生中断置位标志然后又从reload值开始重新递减计数,循环


定时时间计算


t=reload*(1/clk)


clk=72M时,t=72*(1/72m)=1us


clk=72M时,t=72000*(1/72m)=1ms


clk=72M时,t=72000000*(1/72m)=1s


1s=1000MS =1000 000US=1000 000 000NS


sysTick属于内核中的外设,他的中断优先级和外设的中断优先级相比,哪个高?


sysTick中断优先级配置的是scb->shprx寄存器


而外设的中断配置的是NVIC->iprx,有优先级分组和抢占优先级和子优先级的说法。


中断优先级在内核外设同样适用。


systick的使能函数:


static __INLINE uint32_t SysTick_Config(uint32_t ticks)

//判断tick的值是否大于2^24,如果大于,不符合规则

  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);  

//初始化reload寄存器的值                                                                    

  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      

//配置中断优先级,配置为15,默认为最低优先级  

NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  

//初始化counter的值为0

  SysTick->VAL   = 0;                                         

//配置systick的时钟为72M

//使能中断

//使能systick

  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 

                   SysTick_CTRL_TICKINT_Msk   | 

                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */

  return (0);                                                  /* Function successful */

}

编写微秒延时函数


void SysTick_Delay_us(uint32_t us)

{

uint32_t i;

SysTick_Config(72);

for(i=0;i {

//当计数器的值时间到了后,CTRL寄存器位16会置1

while(!((SysTick->CTRL)&(1<<16)));

}

SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;

}

利用中断来进行延时


void SysTick_Init(void)

{

if(SysTick_Config(SystemCoreClock/100000))

while(1);

}

void Delay_ms(__IO u32 nTime)

{

uint32_t TimingDelay;

TimingDelay = nTime;

while(TimingDelay!=0)

TimingDelay--;

}

推荐阅读

史海拾趣

DDP Engineered LED Solutions公司的发展小趣事

DDP Engineered LED Solutions公司自创立之初,便以技术创新作为公司发展的核心动力。在公司成立的早期,研发团队深入LED照明领域,通过不断实验和改进,成功开发出了一系列高效、稳定的LED照明产品。这些产品不仅具有出色的照明效果,而且具有较长的使用寿命和较低的能耗,迅速在市场上获得了认可。随着技术的不断迭代,DDP不断推出符合市场需求的创新产品,逐渐在电子行业LED照明领域崭露头角。

Bytesonic Corporation公司的发展小趣事

经过几年的艰苦打拼,Bytesonic Corporation在1987年迎来了重要的转折点。这一年9月,公司资本金增至新台币500万元,为公司的进一步扩张提供了坚实的资金基础。有了更多的资本支持,公司开始加大在研发和市场推广上的投入,逐渐在行业内树立起了一定的品牌影响力。

Comchip Technology公司的发展小趣事

随着电子行业的快速发展,Comchip Technology不断追求技术创新和产品升级。公司通过大量研发投入,成功开发出了桥式整流器、高效快速整流器等一系列具有市场竞争力的产品。这些产品不仅提高了电子设备的性能,还降低了能耗,赢得了客户的广泛认可。

Dymec公司的发展小趣事

Dymec公司成立的初期,正面临着电子市场快速变革的挑战。为了在市场上立足,公司创始人决定专注于研发高精度电子连接器。经过数月的努力,团队成功开发出了一款具有创新性的连接器产品,这款产品不仅提高了数据传输的效率,还大大增强了设备的稳定性。这一创新为Dymec公司赢得了第一批客户的认可,也为公司后续的发展奠定了坚实的基础。

FEIG ELECTRONIC公司的发展小趣事

Digi-Key作为全球知名的电子元器件分销商,与FEIG ELECTRONIC建立了长期稳定的合作关系。通过这一合作,Digi-Key为FEIG提供了全球范围内的分销服务,将FEIG的产品推向了更广阔的市场。同时,Digi-Key还为FEIG的产品提供了专业的技术支持和售后服务,进一步巩固了FEIG在RFID领域的领先地位。

Dionics Inc公司的发展小趣事

为了进一步拓展国际市场,Dionics Inc开始寻求与国际知名企业的战略合作。经过多次洽谈,公司最终与一家国际知名电子企业达成战略合作协议,共同开发新一代智能穿戴设备。通过这一合作,Dionics Inc不仅获得了宝贵的技术支持和市场资源,还成功将其产品推向了国际市场。

问答坊 | AI 解惑

Speech Recognizer:sapi能够在wince中使用吗?

Licensing Model for Windows CE  中  Professional版本中包含sapi5.0和 Speech Recognizer 但是Microsoft English (US) Windows CE Speech Recognizer (available in 4.2 only) 是说只能在4.2下使用是什么意思?还是4.2以 ...…

查看全部问答>

顺利着陆,来散个分,即散即结

坐的居然也是A330,还好一路无事,飞了12个小时,超累人。顺利抵达西雅图。…

查看全部问答>

wm中wifi与BT兼容性的问题

wifi与BT用的模式都是spi的。两者共用一clk,但是不同的天线。BT与wifi之间相连接的是BT_STATE,WL_ACTIVE,BT_PRIORITY,如果把这三线去掉,单独当其中任何一个都是可以工作的,但是如果连接起来,我的wifi是可以找到无线网络,并且能连接上,但是就 ...…

查看全部问答>

请教读取txt文件的问题

小弟练习做一个电子阅读器, 现在要尝试读txt文件, 以前用过读取文件的api, 不知道txt是不是可以这么读取呢? 其他格式的电子书文件是否先用文件api打开, 再按照特定的方式解码呢? 最后想问问高手们读取大量的文字需要动态分配内存, 小 ...…

查看全部问答>

广告灯自动控制电路图(

城市广告灯大多数只在夜晚12点钟以前起到较好的宣传作用,子夜一过,行人稀少,也就失去了广告的意义。该广告灯自动控制电路能在傍晚天渐黑时自动接通广告灯牌的电源,同时开始计时,待4~6小时后于子夜自动切断电源,从而实现全自动控制和节电的目 ...…

查看全部问答>

寻觅《STM32管脚的Excel文件》

香版,我记得你整理过一份STM32管脚的Excel文件。 论坛上翻了一阵也没找到,麻烦您再上传一次吧。…

查看全部问答>

ARM Cortex-M4 处理器竞争白热化

ARM Cortex-M4 处理器竞争白热化近几年ARM 独领风骚,2010 年,ARM 在32/64 bit MCU 及MPU 架构中的市场占有率最多,达23.5%,据Semicast 统计,2010 年基于ARM 的市场规模已达到200 亿美元,而Cortex-M 架构更是引领了微控制器市场的新风尚,今年 ...…

查看全部问答>

焊好的门禁电路(流水灯测试)和触摸板电路

把门禁电路和触摸板电路焊好了,并且门禁电路板通过了流水灯测试…

查看全部问答>

关于NRF24L01地址问题

我看到NRF的数据手册上有两个地址TX_ADDR和RX_ADDR_P0。TX__ADDR是接收地址是指明发给谁的,RX_ADDR_P0是表明自身的地址,如果他俩相等,从机就接受数据。对不对?那么自动应答地址是什么,所有资料上都说自动应答地址(是给RX_ADDR_P0赋值)要和TX ...…

查看全部问答>