尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

智芯Z20K11x MS定时器调试记录

智芯Z20K11x MS定时器调试记录 前言定时器TIM是单片机最常用的外设之一用于计时、PWM生成、输入捕获等场景。通过数据手册获取时钟和STIM定时器系统框图参考。其中可以通过 SCC 模块可从 FIRC64M 和 OSC40M 中选择一路 clock 作为系统时钟主要思路如下选择 STIM 的功能时钟并使能 STIM 模块的时钟。安装回调函数。使能 STIM 的中断请求IRQ。配置 STIM 并检查输出波形。一、定时0初始化配置定时器0选择CLK_SRC_FIRC64M时钟源初始化配置注册回调函数。void STimDrv_Init(void) { /* Configure STIM function clock*/ CLK_ModuleSrc(CLK_STIM, CLK_SRC_FIRC64M); /* Enable STIM module */ SYSCTRL_EnableModule(SYSCTRL_STIM); /*1MS定时器0初始化配置*/ /* STIM configuration */ STIM_Config_t stimConfig0 { .workMode STIM_FREE_COUNT, .compareValue STIM_OSC_HZ/1000L, /*counter clock is 20M, compare value 20000, period 1ms*/ .countResetMode STIM_INCREASE_FROM_0, .clockSource STIM_FUNCTION_CLOCK, }; /* Init STIM_0*/ STIM_Init(STIM_0, stimConfig0); /* Install interrupt callback function */ STIM_InstallCallBackFunc(STIM_0, STIM_INT, STIM_IntMsCallBack); /* Enable STIM_0 interrupt*/ STIM_IntCmd(STIM_0, ENABLE); /*Enable STIM*/ STIM_Enable(STIM_0); /* Enable STIM NVIC IRQ后续可根据实际需求更改*/ NVIC_SetPriority(STIM_IRQn, 0u); NVIC_EnableIRQ(STIM_IRQn); }二、注册回调函数static void STIM_IntMsCallBack(void) { /* Clear interrupt flag*/ STIM_ClearInt(STIM_0); CoreS_onMs(); /*IO翻转测试TEST*/ GPIO_TogglePinOutput(PORT_E, GPIO_10); }三、测试输出波形#############################################################################void (*coreS_eventMs)(void) NULL; /*Ms event*/ void CoreS_onMs(void) { /*ms函数事件指针*/ if (coreS_eventMs ! NULL) { coreS_eventMs(); } } static void Main_onMs(void) { /*添加其他模块MS事件*/ } int main() { /*关联驱动所有ms事件*/ coreS_eventMs Main_onMs; while (1) { }MS事件注册在内核中注册函数指针可以使用MS中断为所有MS事件提供计时。
返回列表