标签:__ return CTLR SysTick 开发板 15 沁恒 Systick GPIO
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;//清除中断标志
}
标签:__,return,CTLR,SysTick,开发板,15,沁恒,Systick,GPIO 来源: https://blog.csdn.net/doublekis/article/details/122833573
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。