沁恒CH582M开发板-3-Systick滴答定时器的使用
2022/2/9 6:15:03
本文主要是介绍沁恒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;//清除中断标志 }
这篇关于沁恒CH582M开发板-3-Systick滴答定时器的使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享