?? pwm中斷實驗.c
字號:
/**************************************************************
實驗名稱:PWM中斷實驗
實驗目的:熟悉PWM的使用
實驗準備:帶中斷的程序應該運行在FLASH模式下
實驗日期:2008,3,30
作者: 劉啟明
***************************************************************/
#include "iolpc2132.h"
#include "inarm.h"
#define Fpclk 12000000
#define BEEP 1 << 7 // P0.7控制蜂鳴器
/***************************************************************
** 函數名稱: PWM_Int()
** 功能描述: PWM中斷服務函數,取反控制蜂鳴器。
***************************************************************/
#pragma vector=0x18
__irq __arm void PWM_Int(void)
{
PWMIR = 0x01; // 復位PWM中斷標志
/* 取反LED9狀態 */
if((IO0SET & BEEP) == 0) IO0SET = BEEP;
else IO0CLR = BEEP;
VICVectAddr = 0x00; // VIC結束
}
/****************************************************************
** 函數名稱: main()
** 功能描述: 演示PWM作32位定時器使用實驗。
****************************************************************/
void main (void)
{
PINSEL0 = 0x00000000; // 設置管腳連接GPIO
IO0DIR = BEEP;
IO0SET = BEEP;
/* PWM作為定時器時的初始化 */
PWMTC = 0; // 定時器設置為0
PWMPR = 0; // 時鐘不分頻
PWMMCR = 0x03; // 設置T0MR0匹配后復位T0TC,并產生中斷標志
PWMMR0 = Fpclk / 2; // 0.5秒鐘定時
PWMTCR = 0x01; // 啟動定時器
/* 設置PWM中斷 */
__disable_interrupt(); // 關中斷
VICIntSelect = 0x00000000; // 所有中斷連接IRQ
VICVectCntl0 = 0x20 | 8; // 選擇通道0
VICVectAddr0 = (int)PWM_Int; // PWM中斷服務程序地址
VICIntEnable = (1 << 8); // 使能PWM中斷
__enable_interrupt(); //開中斷
while(1); // 等待中斷
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -