?? initial.h
字號:
#pragma CODE_SEG DEFAULT
void Port_Init()
{
//PORTM
DDRM_DDRM6 = 1;//輸出
DDRM_DDRM7 = 1;//輸出
// DMA傳輸 PORTH
DDRH_DDRH0 = 0;//輸入
DDRH_DDRH1 = 1;//輸出
DDRH_DDRH2 = 1;//輸出
// LED顯示端口 POTRP
DDRP = 0xFF;//輸出
//PORTA,PORTB,R_/W,/IRQ 和 ECLK
/* MODE = 0xA0; //1110 0000 普通窄擴展
PEAR_NECLK = 0; //設定ECLK,0 = The associated pin (Port E bit 4) is the external E clock pin.
PEAR_RDWE = 1; //設定R_/W,1 = The associated pin (Port E bit 2) is configured as the R/W pin.
PUCR_PUPEE = 1; //PORTE口上拉
INITEE = 0x00; // (111頁)
*/
INTCR_IRQEN = 1;//使能IRQ中斷 (147頁)
INTCR_IRQE = 0;//IRQ低電平觸發。
MODE = 0xA0; //1110 0000 普通窄擴展
PEAR = 0x04; //0000 1100 NECLK=0, LSTRE=1, RDWE=1
MISC = 0x0D; //Number of E Clocks Stretched, (118頁)
EBICTL = 0x01; ////設定ECLK,ESTR=1 (139頁)
INITEE = 0x00;
}
//SCI 初始化 (有兩個串口0和1)
//注意:倍頻的時候,實際波特率為這里設置的2倍
void SCI_Initial(void)
{
SCI0BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / (57600/2) /* baud rate */ / 16 /*factor*/);
//SCI Control Register 1,2
SCI0CR1 =0x00; //(* Page 397 *)
SCI0CR2 =0x2c; //(* Page 399 *)
SCI1BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / (57600/2) /* baud rate */ / 16 /*factor*/);
//SCI Control Register 1,2
SCI1CR1 =0x00; //(* Page 397 *)
SCI1CR2 =0x2c; //(* Page 399 *)
}
//實時中斷初始化
void RTIInit(void)
{
//48*1.024 ms
RTICTL = 0x7B; //set RTI prescaler
CRGINT = 0x80; //enable RTI interrupts
}
void CAN0_Initial(void)
{
//CAN pin定義
MODRR = 0x00;
DDRM = 0xFF;
//CAN控制0設定, 初始化模式請求, CAN模塊使能
CAN0CTL0 |= 0x01;
while (!(CAN0CTL0 & 0x01));//******注意,是否需要修改
//標識符控制設置
CAN0IDAC = 0x00; //2個32 位接收濾波器
//標識符接收設置
CAN0IDAR0 = 0xFF;
CAN0IDAR1 = 0xFF;
CAN0IDAR2 = 0xFF;
CAN0IDAR3 = 0xFF;
CAN0IDAR4 = 0xFF;
CAN0IDAR5 = 0xFF;
CAN0IDAR6 = 0xFF;
CAN0IDAR7 = 0xFF;
//標識符過濾設置
CAN0IDMR0 = 0xff;
CAN0IDMR1 = 0xff;
CAN0IDMR2 = 0xff;
CAN0IDMR3 = 0xff;
CAN0IDMR4 = 0xff;
CAN0IDMR5 = 0xff;
CAN0IDMR6 = 0xff;
CAN0IDMR7 = 0xff;
//總線定時設置
CAN0BTR0 = CAN_BTR0;
CAN0BTR1 = CAN_BTR1;
//CAN控制1, 模式設置, CAN模塊使能
CAN0CTL1 = 0x80; //CAN0 普通模式
//清INITRQ, 進入普通模式
CAN0CTL0 &= 0xfe;
while (CAN0CTL1 & 0x01);//******注意,是否需要修改
//禁止中斷
CAN0RIER = 0x00;
//發送緩沖區清空
CAN0TFLG = 0x07;
}
void CAN1_Initial(void)
{
//CAN pin定義
MODRR = 0x00;
DDRM = 0xFF;
//CAN控制0設定, 初始化模式請求, CAN模塊使能
CAN1CTL0 |= 0x01;
while (!(CAN1CTL0 & 0x01));//******注意,是否需要修改
//標識符控制設置
CAN1IDAC = 0x00; //2個32 位接收濾波器
//標識符接收設置
CAN1IDAR0 = 0xFF;
CAN1IDAR1 = 0xFF;
CAN1IDAR2 = 0xFF;
CAN1IDAR3 = 0xFF;
CAN1IDAR4 = 0xFF;
CAN1IDAR5 = 0xFF;
CAN1IDAR6 = 0xFF;
CAN1IDAR7 = 0xFF;
//標識符過濾設置
CAN1IDMR0 = 0xff;
CAN1IDMR1 = 0xff;
CAN1IDMR2 = 0xff;
CAN1IDMR3 = 0xff;
CAN1IDMR4 = 0xff;
CAN1IDMR5 = 0xff;
CAN1IDMR6 = 0xff;
CAN1IDMR7 = 0xff;
//總線定時設置
CAN1BTR0 = CAN_BTR0;
CAN1BTR1 = CAN_BTR1;
//CAN控制1, 模式設置, CAN模塊使能
CAN1CTL1 = 0x80; //CAN1 普通模式
//清INITRQ, 進入普通模式
CAN1CTL0 &= 0xfe;
while (CAN1CTL1 & 0x01);//******注意,是否需要修改
//接收中斷禁止
CAN1RIER = 0x00;
//發送緩沖區清空
CAN1TFLG = 0x07;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -