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_ */

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM