?? main.c
字號:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
//=================================================================================================
//函數名:Init_tpm1_counter
//作用:初始化TPM1,內部時鐘工作于自時鐘模式,總線頻率4M;自由計數;溢出時間間隔=65535/4000近似16ms
//=================================================================================================
void Init_tpm1_counter(void)
{
TPM1SC=0x48;//TPM1時鐘源為總線時鐘;分頻系數為一;溢出中斷允許
TPM1CNTH=0;//任意時刻對TPM1CNTH或TPM1CNTL的寫操作將計數寄存器的計數值復位(清零)
}
//=======================================================================================================
//函數名:Init_tpm2_counter
//作用:初始化TPM2,內部時鐘工作于自時鐘模式,總線頻率4M;自由計數;溢出時間間隔=65535/(4000/64)近似1048ms
//========================================================================================================
void Init_tpm2_counter(void)
{
TPM2SC=0x4e;//TPM2時鐘源為總線時鐘;分頻系數為64;溢出中斷允許
TPM2CNTH=0;//任意時刻對TPM2CNTH或TPM2CNTL的寫操作將計數寄存器的計數值復位(清零)
}
//======================
void Init_PortA(void)
{
PTAD = 0X00;//端口A數據寄存器初始化為0
PTADD_PTADD0=1;//引腳PTA0作為輸出引腳
PTADD_PTADD1=1;//引腳PTA1作為輸出引腳
PTADD_PTADD2=1;//引腳PTA2作為輸出引腳
PTADD_PTADD3=1;//引腳PTA3作為輸出引腳
//其他引腳方向控制位默認為輸入引腳
//由于PTA0~PTA3引腳設置為輸出引腳,故它的內部上拉使能控制寄存器不再起作用
PTASE_PTASE0=1;//引腳PTA0的壓擺率控制位使能,提供其EMC性能
PTASE_PTASE1=1;//引腳PTA1的壓擺率控制位使能,提供其EMC性能
PTASE_PTASE2=1;//引腳PTA2的壓擺率控制位使能,提供其EMC性能
PTASE_PTASE3=1;//引腳PTA3的壓擺率控制位使能,提供其EMC性能
PTADS_PTADS0=1;//引腳PTA0高輸出能力使能
PTADS_PTADS1=1;//引腳PTA1高輸出能力使能
PTADS_PTADS2=1;//引腳PTA2高輸出能力使能
PTADS_PTADS3=1;//引腳PTA3高輸出能力使能
}
//=============================
void main(void) {
Init_PortA();
Init_tpm1_counter();
Init_tpm2_counter();
EnableInterrupts; /* enable interrupts */
/* include your code here */
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
//==================計數器1溢出中斷服務程序==========================
interrupt VectorNumber_Vtpm1ovf void TPM1_OVF_ISR(void)
{
if((TPM1SC & 0x80)==0x80)
{
TPM1SC_TOF=0;
PTAD_PTAD0=~PTAD_PTAD0;
}
}
//==================計數器2溢出中斷服務程序==========================
interrupt VectorNumber_Vtpm2ovf void TPM2_OVF_ISR(void)
{
if((TPM2SC & 0x80)==0x80)
{
TPM2SC_TOF=0;
PTAD_PTAD1=~PTAD_PTAD1;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -