hello <br />我在調試的時候出現如下問題<br />Error: At location FFE8 - <br />Error: Attempt to use invalid or uninitialized memory<br /><br />Error: Interrupt processing failed.<br /><br />當取消中斷的時候就不會有這些錯誤,請達人指出如何修正```<br />下面是我寫的代碼,初次接觸freescale,還需多努力```<br />功能是generate 4路,pwm,並且在TPM1TCNL到達TPM1MODL的時候產生一個中斷<br />此為試驗程序只做練習用```<br />-----------------------------<br />MC9HCS08SH8 CW6.0<br />-----------------------<br />#include <hidef.h> /* for EnableInterrupts macro */<br />#include "derivative.h" /* include peripheral declarations */<br /><br />//#pragma DATA_SEG default<br />//char duty;<br /><br /><br />unsigned char tt=0;<br /><br />/*************************************************/<br />/*OSC_CSH*/<br />/*************************************************/ <br /><br />void OSC_CSH()<br />{<br /> ICSC1=0b01000111;<br /> ICSSC&=0x01; //ISC2&ICSTRM should be ignored<br /> SRS=0x82; //SBDFR,SOPT1,2 SPMSC1,2 could be ignored<br /><br />}<br />/*************************************************/<br />/*IO_CSH*/<br />/*************************************************/<br /> void IO_CSH(void)<br />{<br /> PTADD&=0b00111111;<br /> PTADD|=0b00111111;<br /> PTBDD=0xFF; //SET ALL AS OUTPUT<br />}<br />/*************************************************/<br />/*PWM_CSH*/<br />/*************************************************/<br />void PWM_CSH()<br />{<br /> <br /> TPM1SC=0b01001011;<br /> TPM2SC=0b00001011; // 1/8<br /> TPM1MODH=0x00;<br /> TPM2MODH=0x00;<br /> TPM1MODL=0x20;<br /> TPM2MODL=0x20;<br /> TPM1C0SC=0b00101000;<br /> TPM1C1SC=0b00101100;<br /> TPM2C0SC=0b00101000;<br /> TPM2C1SC=0b00101100;<br /> TPM1C0VH=0x00;<br /> TPM1C1VH=0x00; <br /> TPM2C0VH=0x00;<br /> TPM2C1VH=0x00;<br /> TPM1C0VL=0x10;<br /> TPM1C1VL=0x10; <br /> TPM2C0VL=0x10;<br /> TPM2C1VL=0x10;<br />}<br />/*************************************************/<br />/*pwm_interrupt*/<br />/*************************************************/<br />interrupt 20 void b(void) <br /> { <br /> //TPM1SC;<br /> TPM1SC_TOF=~TPM1SC_TOF;<br /> tt=TPM1C1VL;<br /> if (TPM1C1VL<0x20)<br /> tt++;<br /> else tt--;<br /> TPM1C1VL=tt;<br /> }<br />/*************************************************/<br />/*pwm_interrupt*/<br />/*************************************************/<br />void main(void) {<br /><br /><br /> EnableInterrupts /* enable interrupts */<br /> /* include your code here */<br />// duty = 20;<br /> <br /> OSC_CSH();<br /> IO_CSH();<br /> PWM_CSH();<br /> PTAD=0b00000101;<br /> PTAD&=0b00000011;<br /> for(;;) {<br /> __RESET_WATCHDOG(); /* feeds the dog */<br /> } /* loop forever */<br /> /* please make sure that you never leave main */<br />}<br /><br /><br /><br /><br /> |
|