• 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_ */
  • 相关阅读:
    CopyOnWriteArrayList与ConcurrentHashMap
    Latch、Barrier、ThreadLocal
    Future和FutureTask
    SingleThreadExecutor、FixedThreadExecutor、CachedThreadPool、ScheduledThreadPoolExecutor
    ThreadPoolExecutor
    ConcurrentLinkedQueue
    PriorityBlockingQueue
    pom activeByDefault 不生效
    配置log4j2日志报错 Cannot find the declaration of element 'Configuration'
    顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付
  • 原文地址:https://www.cnblogs.com/wenhao-Web/p/12752677.html
Copyright © 2020-2023  润新知