1 /****************************************************************************
2 * 文 件 名: main.c
3 * 描 述: cc2530 定時計數器1產生1毫秒PWM,20%的占空比,led的亮度比較暗
4 * 可調整pwm頻率和占空比來控制Led燈的亮度
5 ****************************************************************************/
6 #include <ioCC2530.h>
7
8 typedef unsigned char uchar;
9 typedef unsigned int uint;
10
11 #define LED1 P1_0 // P1.0口控制LED1
12
13
14 /****************************************************************************
15 * 名 稱: InitLed()
16 * 功 能: 設置LED燈相應的IO口
17 * 入口參數: 無
18 * 出口參數: 無
19 ****************************************************************************/
20 void InitLed(void)
21 {
22 P1DIR |= 0x01; //P1.0定義為輸出
23 LED1 = 1; //使LED1燈上電默認為熄滅
24 }
25
26 /****************************************************************************
27 * 名 稱: InitT1()
28 * 功 能: 定時器初始化,TICKSPD 是16 MHz系統不配置時默認是2分頻,即16MHz
29 * 入口參數: 無
30 * 出口參數: 無
31 ****************************************************************************/
32 void InitT1()
33 {
34 CLKCONCMD &= ~0x40; //設置系統時鐘源為32MHZ晶振
35 while(CLKCONSTA & 0x40); //等待晶振穩定為32M
36 CLKCONCMD &= ~0x07; //設置系統主時鐘頻率為32MHZ
37 CLKCONCMD |= 0x38; //時鐘速度32 MHz 定時器標記輸出設置[5:3]250kHz
38
39 PERCFG |= 0x40; //定時器1 的IO位置 1:備用位置2
40 P2SEL &= ~0x10; //定時器1優先
41 P2DIR |= 0xC0; //第1優先級:定時器1通道2-3
42
43 P1DIR |= 0xff; //端口1為輸出
44 P1SEL |= 0x01; //timer1 通道2映射口P1_0
45
46 T1CC2H = 0x00; //20%占空比為200us
47 T1CC2L = 0x32; //修改T1CC2L可調整led的亮度
48 T1CC0H = 0x00; //1ms的周期時鐘,頻率為976.516HZ
49 T1CC0L = 0xff;
50 T1CCTL2 = 0x1c; // 模式選擇 通道2比較模式
51 T1CTL = 0x02; //250KHz 1分頻
52 }
53
54 /****************************************************************************
55 * 程序入口函數
56 ****************************************************************************/
57 void main(void)
58 {
59 InitLed(); //調用初始化函數
60 InitT1(); //定時器初始化及pwm配置
61 while(1)
62 {
63 }
64 }
復制代碼
|