沁恒CH582M开发板-3-Systick滴答定时器的使用

文章目录[隐藏]

3-Systick滴答定时器的使用

滴答定时器的使用非常简单,沁恒已经为我们封装好了现成的库函数:

RV_STATIC_INLINE uint32_t SysTick_Config(uint64_t ticks)
{
    if((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
        return (1); /* Reload value impossible */

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

下面是一段使用滴答定时器交替闪烁LED灯的代码:

#include "CH58x_common.h"

/*********************************************************************
 * @fn      main
 * @brief   主函数
 * @return  none
 */
 uint32_t cnt=0;
int main() {
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    SysTick_Config(60000000);//设定嘀嗒时间
    GPIOB_SetBits(GPIO_Pin_15);
    GPIOB_ModeCfg(GPIO_Pin_15, GPIO_ModeOut_PP_20mA); // 配置推挽输出
    while(1){
        if (cnt%2==0)
        GPIOB_SetBits(GPIO_Pin_15);
        else
        GPIOB_ResetBits(GPIO_Pin_15);
    }
}

/*********************************************************************
 * @fn      SysTick_Handler
 * @brief   SysTick中断函数
 * @return  none
 */
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
void SysTick_Handler()
{
    cnt++;
    SysTick->SR=0;//清除中断标志
}

版权声明:本文为CSDN博主「le1x1ao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/doublekis/article/details/122833573

生成海报
点赞 0

le1x1ao

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

【STM32Cube笔记】12-配置外部中断

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

stm32cubemx+HAL+串口接收中断

stm32cubemxHAL串口接收中断 在cubemx配置完串口和global interrupt后需要在keil中添加如下代码。 第一步:在main函数中添加接收中断标志位开启函数 HAL_UART_Receive_IT