完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一 main.c中的代码
/*---------------------------------------------------------*/ #include #include "derivative.h" /* derivative-specific definitions */ #include "xgate.h" #include "string.h" #pragma DATA_SEG SHARED_DATA volatile int shared_counter; #pragma DATA_SEG DEFAULT #define ROUTE_INTERRUPT(vec_adr, cfdata) INT_CFADDR= (vec_adr) & 0xF0; INT_CFDATA_ARR[((vec_adr) & 0x0F) >> 1]= (cfdata) #define PTH_VEC 0xCC static void SetupXGATE(void) { XGVBR= (unsigned int)(void*__far)(XGATE_VectorTable - XGATE_VECTOR_OFFSET); //设置中断地址 ROUTE_INTERRUPT(PTH_VEC, 0x81); //将中断交给协处理器,配置中断优先级 CodeWarrior中巧妙地定义了一个宏,方便用户对中断的配置 // 具体到本例:ROUTE_INTERRUPT(SCI0_VEC, 0x81); 实质上就是: step1:INT_CFADDR=0xD0; step2: INT_CFDATA_ARR[3]=0x81; /* enable XGATE mode and interrupts */ XGMCTL= 0xFBC1; /* XGE | XGFRZ | XGIE */ XGSWT= 0x0101; } #pragma CODE_SEG NON_BANKED #define DCPU PORTK_PK4 #define DCPU_dir DDRK_DDRK4 #define LEDON DCPU=0 #define LEDOFF DCPU=1 #define BUS_CLOCK 32000000 //总线频率 #define QSC_CLOCK 16000000 //晶振频率 #define LED PORTB #define LED_dir DDRB #define UP_dir DDRH_DDRH0 /*************************************************************/ /* 初始化锁相环 */ /*************************************************************/ void INIT_PLL(void) { CLKSEL &= 0x7f; //set OSCCLK as sysclk PLLCTL &= 0x8F; //Disable PLL circuit CRGINT &= 0xDF; #if(BUS_CLOCK == 40000000) SYNR = 0x44; #elif(BUS_CLOCK == 32000000) SYNR = 0x43; #elif(BUS_CLOCK == 24000000) SYNR = 0x42; #endif REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M PLLCTL =PLLCTL|0x70; //Enable PLL circuit asm NOP; asm NOP; while(!(CRGFLG&0x08)); //PLLCLK is Locked already CLKSEL |= 0x80; //set PLLCLK as sysclk } /*************************************************************/ /* 延时函数 */ /*************************************************************/ void delay(unsigned int n) { unsigned int i,j; for(j=0;j ; } /*************************************************************/ /* 初始化LED灯 */ /*************************************************************/ void init_led(void) { LED_dir=0xff; //设置为输出 } /*************************************************************/ /* 初始化按键 */ /*************************************************************/ void init_key(void) { UP_dir =0; //设置为输入 PPSH = 0x0f; //极性选择寄存器,选择下降沿; PIFH = 0x0f; //对PIFH的每一位写1来清除标志位; PIEH = 0x0f; //中断使能寄存器; } /*************************************************************/ /* 主函数 */ /*************************************************************/ void main(void) { DisableInterrupts; INIT_PLL(); init_key(); init_led(); DCPU_dir=1; DCPU=0; EnableInterrupts; SetupXGATE(); for(;;) { } } /*************************************************************/ /* 主处理器响应协处理的中断的函数 */ /*************************************************************/ #pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt 25 void Port_H(void) { XGIF1=0X0040; PIFH=0xFF; DCPU = ~DCPU; } #pragma CODE_SEG DEFAULT 二 xgate.cxgate中的代码 #include #include "xgate.h" #include #define UP PTIH_PTIH0 #define DOWN PTIH_PTIH1 #define LEFT PTIH_PTIH2 #define RIGHT PTIH_PTIH3 #define LED PORTB #define LED_dir DDRB unsigned char data=0x03; interrupt void xgPHI(void)//H口中断服务程序(void) { if(PIFH != 0) //判断中断标志 { PIFH = 0xff; //清除中断标志 if(UP == 0) //按键1按下 { LED = ~data; } } asm SIF; } interrupt void ErrorHandler(int dataptr) { int chanNum= dataptr; asm BRK; } #pragma CONST_SEG XGATE_VECTORS /* assign the vector table in separate segment for dedicated placement in linker parameter file */ const XGATE_TableEntry XGATE_VectorTable[] = { // Channel # = Vector address / 2 /* channel 0..8 are not used, first used must match macro XGATE_VECTOR_OFFSET in xgate.h */ {ErrorHandler, 0x09}, // Channel 09 - Reserved {ErrorHandler, 0x0A}, // Channel 0A - Reserved {ErrorHandler, 0x0B}, // Channel 0B - Reserved {ErrorHandler, 0x0C}, // Channel 0C - Reserved {ErrorHandler, 0x0D}, // Channel 0D - Reserved {ErrorHandler, 0x0E}, // Channel 0E - Reserved {ErrorHandler, 0x0F}, // Channel 0F - Reserved {ErrorHandler, 0x10}, // Channel 10 - Reserved {ErrorHandler, 0x11}, // Channel 11 - Reserved {ErrorHandler, 0x12}, // Channel 12 - Reserved {ErrorHandler, 0x13}, // Channel 13 - Reserved {ErrorHandler, 0x14}, // Channel 14 - Reserved {ErrorHandler, 0x15}, // Channel 15 - Reserved {ErrorHandler, 0x16}, // Channel 16 - Reserved {ErrorHandler, 0x17}, // Channel 17 - Reserved {ErrorHandler, 0x18}, // Channel 18 - Reserved {ErrorHandler, 0x19}, // Channel 19 - Reserved {ErrorHandler, 0x1A}, // Channel 1A - Reserved {ErrorHandler, 0x1B}, // Channel 1B - Reserved {ErrorHandler, 0x1C}, // Channel 1C - Reserved {ErrorHandler, 0x1D}, // Channel 1D - Reserved {ErrorHandler, 0x1E}, // Channel 1E - Reserved {ErrorHandler, 0x1F}, // Channel 1F - Reserved {ErrorHandler, 0x20}, // Channel 20 - Reserved {ErrorHandler, 0x21}, // Channel 21 - Reserved {ErrorHandler, 0x22}, // Channel 22 - Reserved {ErrorHandler, 0x23}, // Channel 23 - Reserved {ErrorHandler, 0x24}, // Channel 24 - Reserved {ErrorHandler, 0x25}, // Channel 25 - Reserved {ErrorHandler, 0x26}, // Channel 26 - Reserved {ErrorHandler, 0x27}, // Channel 27 - Reserved {ErrorHandler, 0x28}, // Channel 28 - Reserved {ErrorHandler, 0x29}, // Channel 29 - Reserved {ErrorHandler, 0x2A}, // Channel 2A - Reserved {ErrorHandler, 0x2B}, // Channel 2B - Reserved {ErrorHandler, 0x2C}, // Channel 2C - Reserved {ErrorHandler, 0x2D}, // Channel 2D - Reserved {ErrorHandler, 0x2E}, // Channel 2E - Reserved {ErrorHandler, 0x2F}, // Channel 2F - Reserved {ErrorHandler, 0x30}, // Channel 30 - XSRAM20K Access Violation {ErrorHandler, 0x31}, // Channel 31 - XGATE Software Error Interrupt {ErrorHandler, 0x32}, // Channel 32 - XGATE Software Trigger 7 {ErrorHandler, 0x33}, // Channel 33 - XGATE Software Trigger 6 {ErrorHandler, 0x34}, // Channel 34 - XGATE Software Trigger 5 {ErrorHandler, 0x35}, // Channel 35 - XGATE Software Trigger 4 {ErrorHandler, 0x36}, // Channel 36 - XGATE Software Trigger 3 {ErrorHandler, 0x37}, // Channel 37 - XGATE Software Trigger 2 {ErrorHandler, 0x38}, // Channel 38 - XGATE Software Trigger 1 {ErrorHandler, 0x3B}, // Channel 3B - Periodic Interrupt Timer {ErrorHandler, 0x3A}, // Channel 3A - Periodic Interrupt Timer {ErrorHandler, 0x3B}, // Channel 3B - Periodic Interrupt Timer {ErrorHandler, 0x3C}, // Channel 3C - Periodic Interrupt Timer {ErrorHandler, 0x3D}, // Channel 3D - Periodic Interrupt Timer {ErrorHandler, 0x3E}, // Channel 3E - Reserved {ErrorHandler, 0x3F}, // Channel 3F - Autonomous Periodical interrupt API {ErrorHandler, 0x40}, // Channel 40 - Low Voltage interrupt LVI {ErrorHandler, 0x41}, // Channel 41 - IIC1 Bus {ErrorHandler, 0x42}, // Channel 42 - SCI5 {ErrorHandler, 0x43}, // Channel 43 - SCI4 {ErrorHandler, 0x44}, // Channel 44 - SCI3 {ErrorHandler, 0x45}, // Channel 45 - SCI2 {ErrorHandler, 0x46}, // Channel 46 - PWM Emergency Shutdown {ErrorHandler, 0x47}, // Channel 47 - Port P Interrupt {ErrorHandler, 0x48}, // Channel 48 - CAN4 transmit {ErrorHandler, 0x49}, // Channel 49 - CAN4 receive {ErrorHandler, 0x4A}, // Channel 4A - CAN4 errors {ErrorHandler, 0x4B}, // Channel 4B - CAN4 wake-up {ErrorHandler, 0x4C}, // Channel 4C - CAN3 transmit {ErrorHandler, 0x4D}, // Channel 4D - CAN3 receive {ErrorHandler, 0x4E}, // Channel 4E - CAN3 errors {ErrorHandler, 0x4F}, // Channel 4F - CAN3 wake-up {ErrorHandler, 0x50}, // Channel 50 - CAN2 transmit {ErrorHandler, 0x51}, // Channel 51 - CAN2 receive {ErrorHandler, 0x52}, // Channel 52 - CAN2 errors {ErrorHandler, 0x53}, // Channel 53 - CAN2 wake-up {ErrorHandler, 0x54}, // Channel 54 - CAN1 transmit {ErrorHandler, 0x55}, // Channel 55 - CAN1 receive {ErrorHandler, 0x56}, // Channel 56 - CAN1 errors {ErrorHandler, 0x57}, // Channel 57 - CAN1 wake-up {ErrorHandler, 0x58}, // Channel 58 - CAN0 transmit {ErrorHandler, 0x59}, // Channel 59 - CAN0 receive {ErrorHandler, 0x5A}, // Channel 5A - CAN0 errors {ErrorHandler, 0x5B}, // Channel 5B - CAN0 wake-up {ErrorHandler, 0x5C}, // Channel 5C - FLASH {ErrorHandler, 0x5D}, // Channel 5D - EEPROM {ErrorHandler, 0x5E}, // Channel 5E - SPI2 {ErrorHandler, 0x5F}, // Channel 5F - SPI1 {ErrorHandler, 0x60}, // Channel 60 - IIC0 Bus {ErrorHandler, 0x61}, // Channel 61 - Reserved {ErrorHandler, 0x62}, // Channel 62 - CRG Self Clock Mode {ErrorHandler, 0x63}, // Channel 63 - CRG PLL lock {ErrorHandler, 0x64}, // Channel 64 - Pulse Accumulator B Overflow {ErrorHandler, 0x65}, // Channel 65 - Modulus Down Counter underflow {(XGATE_Function)xgPHI, 0x66}, // Channel 66 - Port H {ErrorHandler, 0x67}, // Channel 67 - Port J {ErrorHandler, 0x68}, // Channel 68 - ATD1 {ErrorHandler, 0x69}, // Channel 69 - ATD0 {ErrorHandler, 0x6A}, // Channel 6A - SCI1 {ErrorHandler, 0x6B}, // Channel 6B - SCI0 {ErrorHandler, 0x6C}, // Channel 6C - SPI0 {ErrorHandler, 0x6D}, // Channel 6D - Pulse accumulator input edge {ErrorHandler, 0x6E}, // Channel 6E - Pulse accumulator A overflow {ErrorHandler, 0x6F}, // Channel 6F - Enhanced Capture Timer overflow {ErrorHandler, 0x70}, // Channel 70 - Enhanced Capture Timer channel 7 {ErrorHandler, 0x71}, // Channel 71 - Enhanced Capture Timer channel 6 {ErrorHandler, 0x72}, // Channel 72 - Enhanced Capture Timer channel 5 {ErrorHandler, 0x73}, // Channel 73 - Enhanced Capture Timer channel 4 {ErrorHandler, 0x74}, // Channel 74 - Enhanced Capture Timer channel 3 {ErrorHandler, 0x75}, // Channel 75 - Enhanced Capture Timer channel 2 {ErrorHandler, 0x76}, // Channel 76 - Enhanced Capture Timer channel 1 {ErrorHandler, 0x77}, // Channel 77 - Enhanced Capture Timer channel 0 {ErrorHandler, 0x78}, // Channel 78 - Real Time Interrupt {ErrorHandler, 0x79}, // Channel 79 - IRQ }; 这段程序要实现的就是双核运行成功,具体什么功能不是重点,求好心人告诉哪边出了问题或者需要查阅哪方面的资料都行!!!我用的是MC9S12XET256的板子感激不尽,谢谢!谢谢!谢谢!{:4_106:} |
|
相关推荐
1个回答
|
|
程序跑飞不代表就是程序问题。静电方面、供电不稳定,晶振虚焊等都会引起。应该注意。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
277 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
368 浏览 0 评论
766 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
592 浏览 0 评论
879 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12039 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 08:47 , Processed in 0.588939 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号