芯源半导体CW32
直播中

1652981125.048900

12年用户 1097经验值
擅长:连接器 EDA/IC设计 处理器/DSP 接口/总线/驱动 控制/MCU RF/无线
私信 关注
[讨论]

【CW32饭盒派开发板试用体验】+定时器操作初探讨

        CW32F030x6/x8 微控制器内部集成多达四个通用定时器、三个基本定时器和一个高级控制定时器。
各个不同定时器的功能差异如下表所示:
CW32的定时器类型.jpg

      在一般的项目中,特别是裸机程序中会经常用到定时器来计时。因此,定时器的应用也是必不可少的。作为

初探讨(不做深入研究),我们来了解它的通用定时器的使用。

      依照官方给的代码,在前面串口的例子里面,我们新建GtiM.C和CTIM.H文件。移植官方的代码。我们要CW32

定时输出一串信息,同时LED2不断切换状态。如下:

定时打印输出.jpg



    打开串口助手,配置好串口信息,然后打开串口开关。按下小蓝板上面的复位键,然后,就可以看到LED2一秒切换

一次状态,同时,串口助手输出了一串信息。如下所示:

定时1S.jpg

仔细看,时间好像不是很准。当然,要想精确测量时间,得上个示波器来测量LED2的状态。也要将LED2的状态切换

放到定时器终端里面去。



GTIM的初始化如下:

    void  GTIM_Configuration( void )

{
    GTIM_InitTypeDef GTIM_InitStruct;
    BTIM_TimeBaseInitTypeDef BTIM_InitStruct;

    __RCC_BTIM_CLK_ENABLE();
    __RCC_GTIM1_CLK_ENABLE();

    /* NVIC Configuration */
    NVIC_Configuration();

    GTIM_InitStruct.Mode = GTIM_MODE_COUNTER;
    GTIM_InitStruct.OneShotMode = GTIM_COUNT_CONTINUE;
    GTIM_InitStruct.Prescaler = GTIM_PRESCALER_DIV1;
    GTIM_InitStruct.ReloadValue = 1000-1;     // 1S 1次  1000-1;
    GTIM_InitStruct.ToggleOutState = DISABLE;
    GTIM_TimeBaseInit( CW_GTIM1, >IM_InitStruct );

    GTIM1_ITRConfig( ITR_SOURCE_BTIM1 );

    BTIM_InitStruct.BTIM_Mode = BTIM_Mode_TIMER;
    BTIM_InitStruct.BTIM_OPMode = BTIM_OPMode_Repetitive;
    BTIM_InitStruct.BTIM_Period = 63999;      // 1MS 1次     47999
    BTIM_InitStruct.BTIM_Prescaler = BTIM_PRS_DIV1;
    BTIM_TimeBaseInit( CW_BTIM1, &BTIM_InitStruct );

    GTIM_ITConfig( CW_GTIM1, GTIM_IT_OV, ENABLE );
    BTIM_ITConfig( CW_BTIM1, BTIM_IT_TI, ENABLE );

    GTIM_Cmd( CW_GTIM1, ENABLE );
    BTIM_Cmd( CW_BTIM1, ENABLE );

}

中断代码如下:

void GTIM1_IRQHandlerCallBack( void )
{
    if ( GTIM_GetITStatus( CW_GTIM1, GTIM_IT_OV ) )
    {
        GTIM_ClearITPendingBit( CW_GTIM1, GTIM_IT_OV );
        gtim1Flag = 1;
    }
}

/**
* @Brief This funcation handles GTIM1
*/
void GTIM1_IRQHandler( void )
{
    /* USER CODE BEGIN */
    GTIM1_IRQHandlerCallBack();
    /* USER CODE END */
}





      定时器的实现,将有助我们后面程序功能的实现。本次定时器操作初探讨在这里就结束了,有兴趣的小伙伴或者

想深入研究的小伙伴,可以多看看官方的参考代码,实际动手去调试。发现问题,然后解决问题,如此,才能进步。


更多回帖

发帖
×
20
完善资料,
赚取积分