• LPC1768定时器0配置-定时器模式


    一、定时器时钟走向

     二、程序实现

      1.bsp_timer0.c文件内容:

     1 /*
     2  * bsp_timer0.c
     3  *
     4  *  Created on: 2020年4月22日
     5  *      Author: Mr.W
     6  */
     7 #include "./timer0/bsp_timer0.h"
     8 
     9 
    10 /*
    11  * 函数名:bsp_timer0_init
    12  * 描述:定时器0初始化
    13  * 参数:无
    14  * 返回值无
    15  * 作者:Mr.W
    16  * 时间:2020-4-22
    17  */
    18 void bsp_timer0_init(void)
    19 {
    20     /* #1:打开定时器0的电源(默认是打开的) */
    21     LPC_SC->PCONP &= ~(1 << 1);
    22     LPC_SC->PCONP |= (1 << 1);
    23     /* #2:时钟分频选择(默认00),00 四分频, 01 不分频, 10 二分频, 11 八分频 */
    24     LPC_SC->PCLKSEL0 &= ~(3 << 2);
    25     LPC_SC->PCLKSEL0 |= (0 << 2);
    26     /* #3:复位定时器中断 */
    27     LPC_TIM0->IR = 0x3F;
    28     /* #4:复位计数器 */
    29     LPC_TIM0->TCR = 0x02;
    30     /* #5:设置为定时器模式,计数模式递增 */
    31     LPC_TIM0->CTCR = 0;
    32     /* #6:从0开始计数 */
    33     LPC_TIM0->TC = 0;
    34     /* #7:指定预分频器最大的分频值 */
    35     LPC_TIM0->PR = 0;
    36     /* #8:设置匹配寄存器的值,如果外设时钟是24MHz,要使定时器每10ms触发一次中断,需要设置MR0=24MHz/100 */
    37     LPC_TIM0->MR0 = PCLK/100;
    38     /* #8:MR0与TC值匹配时将产生中断,TC复位 */
    39     LPC_TIM0->MCR = 0x03;
    40     /* #9:设置中断优先级 */
    41     NVIC_SetPriority(TIMER0_IRQn, 5);
    42     /* #10:使能定时器中断*/
    43     NVIC_EnableIRQ(TIMER0_IRQn);
    44     /* #11:开启定时器 */
    45     LPC_TIM0->TCR = 0x01;
    46 }
    47 
    48 
    49 /*
    50  * 函数名:TIMER0_IRQHandler
    51  * 描述:中断处理函数
    52  * 参数:无
    53  * 返回值无
    54  * 作者:Mr.W
    55  * 时间:2020-4-22
    56  */
    57 void TIMER0_IRQHandler(void)
    58 {
    59     /* 如果MR0匹配中断产生 */
    60     if(LPC_TIM0->IR & 0x01)
    61     {
    62         /*
    63          * 这里添加用户的中断处理程序
    64          */
    65     }
    66     /* 清除MR0中断标志位 */
    67     LPC_TIM0->IR = 0x01;
    68 }

      2.bsp_timer0.h文件内容:

     1 /*
     2  * bsp_timer0.h
     3  *
     4  *  Created on: 2020年4月22日
     5  *      Author: Mr.W
     6  */
     7 
     8 #ifndef TIMER0_BSP_TIMER0_H_
     9 #define TIMER0_BSP_TIMER0_H_
    10 
    11 #ifdef __USE_CMSIS
    12 #include "LPC17xx.h"
    13 #endif
    14 
    15 
    16 void bsp_timer0_init(void);
    17 
    18 #endif /* TIMER0_BSP_TIMER0_H_ */
  • 相关阅读:
    破解登录手机验证码思路
    自媒体平台越来越多,取舍之后我只推荐这7家平台
    微信小程序:JS 交互逻辑
    微信小程序:WXSS 样式
    微信小程序:WXML 模板
    微信小程序:页面配置 page.json
    SQLServer创建维护计划失败 错误c001f011
    远程连接提示要求的函数不受支持如何解决
    安装 SQLManagementStudio_x86_CHS(SQL Server Management Studio) 老提示重启的解决办法
    数据库属性
  • 原文地址:https://www.cnblogs.com/wenhao-Web/p/12752677.html
Copyright © 2020-2023  润新知