• RT1052+定时器移植+LED翻转


    定时器使用的是Pit定时器,pit定时器有四路,例程上用的是通道0。
    但是在使用例程的时候编译找不到fsl_debug_console_conf.h头文件,配置也没有问题,实在没有办法只好把它移植到LED工程里面。
    需要移植的参数如下
    /* Enable clock gate for GPIO1 */
        CLOCK_EnableClock(kCLOCK_Gpio1);

        /* Set PERCLK_CLK source to OSC_CLK*/
        CLOCK_SetMux(kCLOCK_PerclkMux, 1U);
        /* Set PERCLK_CLK divider to 1 */
        CLOCK_SetDiv(kCLOCK_PerclkDiv, 0U);

        /*
         * pitConfig.enableRunInDebug = false;
         */
        PIT_GetDefaultConfig(&pitConfig);

        /* Init pit module */
        PIT_Init(PIT, &pitConfig);

        /* Set timer period for channel 0 */
        PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000000U, PIT_SOURCE_CLOCK));

        /* Enable timer interrupts for channel 0 */
        PIT_EnableInterrupts(PIT, kPIT_Chnl_0, kPIT_TimerInterruptEnable);

        /* Enable at the NVIC */
        EnableIRQ(PIT_IRQ_ID);

        /* Start channel 0 */
        PRINTF("\r\nStarting channel No.0 ...");
        PIT_StartTimer(PIT, kPIT_Chnl_0);

    设置定时器频率为 PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(1000000U, PIT_SOURCE_CLOCK));
    USEC_TO_COUNT(1000000U, PIT_SOURCE_CLOCK)是us级定时器,还有ms级定时器MSEC_TO_COUNT,根据介绍计算相关计数,1000000/1000000U=1S。
    然后设置中断,使能通道0。
    中断响应函数PIT_IRQHandler
    通过读取各通道的状态PIT_GetStatusFlags(PIT, kPIT_Chnl_0);
    kPIT_TimerFlag,值为1。也就是为1的时候触发该通道定时器。
    然后清除定时器
    PIT_ClearStatusFlags(PIT, kPIT_Chnl_0, kPIT_TimerFlag);
    通过定时器来控制LED的翻转
    USER_LED_TOGGLE();
    <ignore_js_op>

    定时器.jpg (2.08 MB, 下载次数: 14)

    下载附件

    2018-11-6 22:40 上传

     
  • 相关阅读:
    你好毒
    Sketchup创建屋顶插件
    sketchup实体开洞插件holeonsolid
    SolidWork支架模型
    让WebForm异步起来
    正则表达式点滴(2)
    异步调用之精简方式
    浅谈C#中常见的委托
    基于异步方式的语法着色器
    利用WPF的ListView进行大数据量异步加载
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/16390657.html
Copyright © 2020-2023  润新知