历史上的今天
返回首页

历史上的今天

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

2018年07月20日 | Stm32f01x_SysTick定时器_延时功能

2018-07-20 来源:eefocus

最近在看利用SysTick定时器实现延时功能,总结笔记:

1.库函数相关

(1)Systick 部分内容属于NVIC控制部分,一共有4个寄存器(core_cm3.h)

static __INLINE uint32_t SysTick_Config(uint32_t ticks)//ticks为计时间隔,多少个ticks/秒

SysTick->LOAD =ticks&SysTick_LOAD_RELOAD_Msk //设置重载寄存器的值S,ystick是一个递减的定时器,当定时器递减至0时,重载寄存器中的值就会被重装载,继续开始递减。STK_LOAD  重载寄存器是个24位的寄存器最大计数0xFFFFFF

 SysTick->VAL=0 //当前值寄存器,是个24位的寄存器,读取时返回当前倒计数的值,写它则使之清零,同时还会清除在SysTick 控制及状态寄存器中的COUNTFLAG 标志

SysTick->CTRL |=0x06//控制寄存器,关闭Systick功能,开启Systick中断,使用HCLK作为Systick时钟

SysTick->CTRL |=0x07//开启Systick功能,开启Systick中断,使用HCLK作为Systick时钟

第0位:ENABLE,Systick 使能位  (0:关闭Systick功能;1:开启Systick功能)
第1位:TICKINT,Systick 中断使能位    (0:关闭Systick中断;1:开启Systick中断)
第2位:CLKSOURCE,Systick时钟源选择  (0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)
第3位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零

(2)SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)//misc.h,选择时钟频率

 2

#include
#include
#include

//配置systick 寄存器
void SysTick_Configuration(void) 

SysTick->VAL = 0; 
 SysTick->LOAD = (72000000/8000000)*1000;//´ú±íÿ¸ömsÐèÒªµÄ9000¸ösystickʱÖÓÊý 
SysTick->CTRL |= 0x06; 
 } 
//中断处理函数
void SysTick_Handler(void) //???? 

extern unsigned long TimingDelay; // ????,????????? 
SysTick->VAL = 0; 
if (TimingDelay != 0x00) 
TimingDelay--; 

//systick延时函数
unsigned long TimingDelay;  // 
void Delay(unsigned long nTime)  //

SysTick->CTRL |=0x07;   // 
TimingDelay = nTime; //  
while(TimingDelay != 0); //  
SysTick->CTRL |=0x06;//  

 
int main() 
 { 
  SystemInit();    //??(??)??? 
 LED_Init();
  SysTick_Configuration(); //??systick??? 
while(1)
{
GPIOA->ODR|=1<<8;
GPIOD->ODR|=1<<2;
Delay(1000); //1S 
GPIOA->ODR&=~(1<<8);
GPIOD->ODR&=~(1<<2);
Delay(1000); //1S  
                                                                              
  } 


推荐阅读

史海拾趣

ELEMENT14公司的发展小趣事

ELEMENT14一直注重创新产品的引入和推广。公司紧跟电子行业的最新技术趋势,及时引入高性能、高可靠性的电子元器件产品。同时,ELEMENT14还积极推广这些创新产品,通过举办技术研讨会、发布技术白皮书等方式,帮助客户了解产品的特点和优势。这些努力不仅提升了公司的技术水平,也为客户提供了更多的选择。

Gamma Microelectronics ( APM )公司的发展小趣事

G24i在发展过程中始终注重国际合作与市场拓展。公司董事长Mr. Edward J Stevenson及其团队多次访问国内外知名科研机构和企业,就DSSC技术的研发、产业化等方面进行深入交流。同时,G24i还积极参加国际太阳能展会和论坛,展示其最新的技术成果和产品应用。这些努力不仅提升了G24i在国际市场上的知名度和影响力,也为公司赢得了更多的合作机会和市场份额。通过国际合作与市场拓展,G24i正逐步成为全球DSSC领域的领军企业之一。

ALSC [Alliance Semiconductor Corporation]公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,ALSC开始积极拓展国内外市场。公司不仅在国内建立了完善的销售网络,还与多家国际知名企业建立了战略合作关系。通过与国际伙伴的紧密合作,ALSC成功将产品推向全球市场,进一步提升了公司的知名度和影响力。

格科微电子(GALAXYCORE)公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,ALSC开始积极拓展国内外市场。公司不仅在国内建立了完善的销售网络,还与多家国际知名企业建立了战略合作关系。通过与国际伙伴的紧密合作,ALSC成功将产品推向全球市场,进一步提升了公司的知名度和影响力。

Bellin公司的发展小趣事

随着产品质量的不断提升和市场口碑的积累,ALSC开始积极拓展国内外市场。公司不仅在国内建立了完善的销售网络,还与多家国际知名企业建立了战略合作关系。通过与国际伙伴的紧密合作,ALSC成功将产品推向全球市场,进一步提升了公司的知名度和影响力。

BCD Semi(Diodes)公司的发展小趣事

在电子行业的发展过程中,市场波动和风险挑战是不可避免的。某一年,全球半导体市场出现了严重的产能过剩,导致产品价格大幅下跌。面对这一挑战,BCD Semi(Diodes)公司及时调整生产策略,优化产品结构,降低生产成本,成功度过了这一行业寒冬。

问答坊 | AI 解惑

[經典資源分享]各大公司電子類招聘題目精選

[經典資源分享]各大公司電子類招聘題目精選 類比電路 1、基爾霍夫定理的內容是什麼?(仕蘭微電子) 2、平板電容公式(C=εS/4πkd)。(未知) 3、最基本的如三極管曲線特性。(未知) 4、描述回饋電路的概念,列舉他們的應用。(仕蘭微電子) ...…

查看全部问答>

电抗性元件

哪位大哥能帮我详细的介绍下电抗性元件? 谢谢…

查看全部问答>

请问arm的boot代码与bootloader是不是一回事?

1,请问arm的boot代码与bootloader是不是一回事? 2,一般的arm芯片出厂的时候固化有启动代码吗?如果有,为什么还需要用户编写启动程序?…

查看全部问答>

为什么这用了shadow register ?

C-Source Code Generated AssemblyMemory Instruction// Enable only 2801 Peripheral Clocksunion PCLKCR0_REG shadowPCLKCR0;EALLOW; 3F82A7 EALLOWshadowPCLKCR0.bit.rsvd1 = 0; 3F82A8 MOV @AL,#0x47D8shadowPCLKCR0.bit.TBCLKSYNC = 0; 3F82AA ...…

查看全部问答>

用状态机编程

高手们有没有用过状态机编程的?能分享一下经验吗?…

查看全部问答>

内容可寻址存储器

谁用过CAM芯片,最好是摩托罗拉的mcm69c433,讲下使用方法,谢谢!…

查看全部问答>

关于微机原理单片机问题

题目简介:该设计用单片机控制,采用矩阵式输出,使单片机的15根口线控制56路彩灯。本控制器在电路不变的条件下,通过更改软件,能实现各种吧同德花样控制。本控制器可以用在广告灯箱控制,大型广告牌背景灯控制,各种“跑灯”、“流水灯”控制等场 ...…

查看全部问答>

Nand Flash 实验的问题

代码是2440开发板的Nand Flash 实验 /*------------------------------------------------------------/ 函数名称:        ReadPage 功能描述:        传    参:      & ...…

查看全部问答>

HELLO WORLD

本人最近开始学习windows驱动开发。发现太不好学了。 我在网上下了一个hello world程序,编译通过、生成.sys文件。 但不我知道怎么能看到结果呢。 请指教。…

查看全部问答>