[单片机芯片] 沁恒CH582M开发板-3-Systick滴答定时器的使用

[复制链接]
1333|7
 楼主| 梅花香自123 发表于 2022-11-29 23:47 | 显示全部楼层 |阅读模式
TI, ck, ic, sy
3-Systick滴答定时器的使用 滴答定时器的使用非常简单,沁恒已经为我们封装好了现成的库函数:
  1. RV_STATIC_INLINE uint32_t SysTick_Config(uint64_t ticks)
  2. {
  3.     if((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
  4.         return (1); /* Reload value impossible */

  5.     SysTick->CMP = ticks - 1; /* set reload register */
  6.     PFIC_EnableIRQ(SysTick_IRQn);
  7.     SysTick->CTLR = SysTick_CTLR_INIT | //向上计数从0 开始,向下计数从比较值开始;
  8.                     SysTick_CTLR_STRE |
  9.                     SysTick_CTLR_STCLK |  //HCLK 做时基;
  10.                     SysTick_CTLR_STIE |  //使能计数器中断;
  11.                     SysTick_CTLR_STE;   //启动系统计数器STK;
  12.     /* Enable SysTick IRQ and SysTick Timer */
  13.     return (0);                       /* Function successful */
  14. }





 楼主| 梅花香自123 发表于 2022-11-29 23:48 | 显示全部楼层
下面是一段使用滴答定时器交替闪烁LED灯的代码:
  1. #include "CH58x_common.h"

  2. /*********************************************************************
  3. * @fn      main
  4. * [url=home.php?mod=space&uid=247401]@brief[/url]   主函数
  5. * [url=home.php?mod=space&uid=266161]@return[/url]  none
  6. */
  7. uint32_t cnt=0;
  8. int main() {
  9.     SetSysClock(CLK_SOURCE_PLL_60MHz);
  10.     SysTick_Config(60000000);//设定嘀嗒时间
  11.     GPIOB_SetBits(GPIO_Pin_15);
  12.     GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_20mA); // 配置推挽输出
  13.     while(1){
  14.         if (cnt%2==0)
  15.         GPIOB_SetBits(GPIO_Pin_15);
  16.         else
  17.         GPIOB_ResetBits(GPIO_Pin_15);
  18.     }
  19. }

  20. /*********************************************************************
  21. * @fn      SysTick_Handler
  22. * @brief   SysTick中断函数
  23. * @return  none
  24. */
  25. __attribute__((interrupt("WCH-Interrupt-fast")))
  26. __attribute__((section(".highcode")))
  27. void SysTick_Handler()
  28. {
  29.     cnt++;
  30.     SysTick->SR=0;//清除中断标志
  31. }
uptown 发表于 2023-1-5 11:49 | 显示全部楼层
如果不开启滴答定时器,可以用定时器判断的吗?
dspmana 发表于 2023-1-5 11:57 | 显示全部楼层
沁恒的库代码做的非常全面呢。              
1988020566 发表于 2023-1-5 13:30 | 显示全部楼层
怎么才能将滴答定时器配置为延时代码。
updownq 发表于 2023-1-5 14:35 | 显示全部楼层
这个中断函数是怎么配置的?              
pentruman 发表于 2023-1-5 16:21 | 显示全部楼层
这个用法非常简单的。              
LOVEEVER 发表于 2023-2-8 09:43 | 显示全部楼层
沁恒封装好了现成的库函数,这点可以,用起来方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

1216

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部