请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
大家好、很高兴有人帮助我。
我在使我的代码中的两个中断正常工作时遇到了困难
第一个是指时钟、第二个是指我的 UART 通信
独立的、这两者正常工作、但在同时启用两者时、UART 通信停止正常工作、发送任何数据。
以下是部分代码:
int main (void){
hfsec = 0;
sec = 0;
min = 10;
hour = 21;
WDTCTL = WDTPW + WDTHOLD;//看门狗计时器
FLL_CTL0 = XCAP18PF; //0x0053 - FLL+控制0 =(0x30)- XIN 电容器= XOUT 电容器= 18pf
FLL_CTL1 = SCFQ_64K; //fdco=64k - 0x0054 - FLL+控制1 =
SCFQCTL = 0x28 + 5; //fLCD=fk/64帧频率~30Hz - fMCLK = 2*fACLK
//基本计时器0.5sÖжÏÒ»´Î
IE2 |= 0x80; /*中断使能2 */
LCDCTL = 0x5f; //s0-s11 fuctions as LCD segment lcdson=1 lcddon=1
P5SEL=0xFC; //选择 fuion:R13 R23 r33 com3.2.1
_BIS_SR (GIE);//等于_EINT ();*/
// EINT ();
UartConfig ();
_ bis_SR_register (GIE);
TX (0、"Diogel\r\n");
SPI_setup ();
while (1){ //主循环
lcd_clear ();
varredura = kb_read ();
savePass ();
passRead ();
if (((kb_port_in 和 log)=0){
log (); //此处通过串行通信返回内存的数据
}//循环 while (1)
}// função main
#pragma vector=BASICTIMER_VECTOR
//#pragma vector=TIMER0_A1_vector
//#pragma vector=COMP_B_VECTOR
__INTERRUPT BT_ISR (void){LPM3_OUT+=LED0+
;void
= 0+=^ 0+;void = f0+;void = f0+= f0+;void = f0+= 0+;void = 0+= f0+ // ledÃëµãÉÁ˸
// P6OUT^=LED0;
if (sec=60){
min++;
sec=0;
}
if (min==60){
hour++;
min=0;
}
if (hour==24){
hour=0;
}
SEC_H = tab[sec/10];
SEC_L = tab[sec%10];
min_H = tab[min/10];
min_L = tab[min%10];
hour_H = tab[小时/10];
Hour_L = tab[Hour%10];
}
//计时器 A0中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=TIMER0_A0_vector
__interrupt void Timer_A (void)
#Elif Defined (__GNU__)(
void TI_Timer_)(void Timer_)(void Timer_)(void TI_interrupt COMPLER_A)(void Timer_)(void Timer_)(void Timer_)(void tim
#endif
{
CCR0 += Bitime;//将偏移添加到 CCR0
// RX
IF (CCTL0和 CCIS0)// CCI0B 上的 RX?
{
if (CCTL0 & CAP)//捕获模式=起始位边缘
{
CCTL0 &=~ CAP;//捕获至比较模式
CCR0 += BiTime_5;
}
否则
{
RXData = RXData >> 1;
IF (CCTL0 & SCCI)//获取接收 RXLATCH 数据
|= 0x80;
BitCntRX - ;//所有位都是 RXed?
if (BitCntRX =0)// se contador do RX zerar
//>>>>> 在此处解码接收到的字节<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
if (pBufRxGPRS>=TamBufRxGPRS-2){
pBufRxGPRS=0;
}
if (RXData =<16
){RXEnter = 1;// RXDado = 0;// RXDado =(pBufRxGPRS[pBufRxGPRS-3]<16)|(BufRxGPRS=0
)~
= 0;// pBufRxRxRxGPRS=0> 0;pBuxRxGPRS=0> 0 (pBuf_CCRxGs=0> 0)/pBuxGPRS=0)+ 0;pBuf_0 += 0 (pBuxGPRS=pBuxGPRS=0)+= 0 += 0;pBuf_CC0> 0 += 0;pBuf_CCrgPRS=pBuf_CC0>(pBuxGPRS[b<b<b<b<b<b<b<b<b<
在此处解码接收到的字节<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<><<<<<>}
}
// TX
else
{
if (BitCntTX ==0)
CCTL0 &=~ CCIE;//所有位 TXed、禁用中断
否则
{
CCTL0 |= OUTMOD2;// TX Space
if (TXData & 0x01)
CCTL0 &=~ OUTMOD2;// TX Mark
TXData = TXData >> 1;
BitCntTX
}-}