[STM32单片机]之systick定时器学习2

1、利用systick完成分秒计时的时钟,通过上位机观察时钟的变化。

 1 //初始化
 2 void SysTick_Config(void)
 3 {
 4       /*disable systick counter */
 5      SysTick_CounterCmd(SysTick_Counter_Disable);   
 6       /*disable systick interrupt */ 
 7       SysTick_ITConfig(Disable);
 8       /*Counter HCLK clock as SysTick clok source */ 
 9       SysTick_CLKSourceComfig(SysTick_CLKSource_HCLK_Div8);//SysTick 时钟源为 AHB 时钟除以 8;
10       /*SysTick interrupt each 1000Hz with HCLK equal to 72Mhz */ 
11          SysTick_SetReload(9000*1000);  //9000/9M=0.001秒 9000*1000=9000 000/9M=1秒
12        /*Enable the SysTick interrupt*/
13       SysTick_ITConfig(ENABLE) ;
14 }
15 
16 //将秒和分的数据上传到上位机
17 
18 sec =30 ;  //声明秒变量sec
19 min=1;    //声明分变量min
20 
21 while(1)
22 {
23     FlagStatus Status; 
24     Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT);
25      if(Status == RESET) 
26 { 
27      
28 } 
29 else 
30 { 
31      sec++;
32     if(sec == 60)
33     { 
34        sec =0;
35       min++;
36 
37      }
38     printf("%d:%d\t",min,sec); 
39 } 
40   
41 }
42     

课后作业:在此基础上增加小时的表示;由上位机通过发送数据的方式来修改下位机时间。

不用函数库你能够直接通过操作寄存器的方式对SysTick进行配置。

posted @ 2021-10-31 20:51  2020年2月1日13点30分  阅读(8)  评论(0)    收藏  举报