沁恒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-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享