2333|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430F2471串口中断里写不上flash,是什么原因 [复制链接]

#include


void int_sys()
{
   WDTCTL = WDTPW + WDTHOLD;
  // if (CALBC1_12MHZ ==0xFF || CALDCO_12MHZ == 0xFF)                                    
  //{  
  //  while(1);                               // If calibration constants erased
                                           // do not load, trap CPU!!
  //}  
  
    DCOCTL  = CALDCO_1MHZ;
    BCSCTL1 = CALBC1_1MHZ+0x30;
    BCSCTL2 = 0x00;
    BCSCTL3 = 0x20;
   
    //delay1ms(1000);
   
    //DCOCTL  = CALDCO_12MHZ;
    //BCSCTL1 = CALBC1_12MHZ+0x30;
    if (BCSCTL1 == 0xFF)                      // Check flash erasure
         while(1);                               // If DCO constants invalid,trap CPU   
    FCTL2 = FWKEY + FSSEL0 + FN1;  

   
  // playsb(0xe7);
   P3SEL=0X30;
  P3SEL |= 0x0C0;    // P3.6,7 = USCI_A1 TXD/RXD
   
  UCA0CTL1 |=  UCSSEL_2;                       // CLK = ACLK
  UCA0BR0 = 104;                           // 32kHz/9600 = 3.41
  UCA0BR1 = 0;
  UCA0MCTL = UCBRS1 + UCBRS0;               // Modulation UCBRSx = 3
  UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  IE2 |= UCA0RXIE ;               // Enable USCI_A0 TX/RX interrupt

  UCA1CTL1 |=  UCSSEL_2;                       // SMCLK
  UCA1BR0 = 104;                             // 12MHz 9600
  UCA1BR1 = 0;
  UCA1MCTL =  UCBRS0;                         // Modulation UCBRSx = 1
  UCA1CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
  UC1IE |= UCA1RXIE;                          // Enable USCI_A1 RX interrupt
  

  TA0CCTL0 = CCIE;                           // TA0CCR0 interrupt enabled
  TA0CCR0 = 11400;
  TA0CTL = TASSEL_2 + MC_1;                  // SMCLK, upmode

  _EINT();
  
}
void delay1_ms(unsigned int k)
{
  unsigned int i,m;
  for(m=0;m   {
  for(i=0;i<100;i++)
  {;}
  }
}

void s0_send_byte(unsigned char data)
{ while (!(IFG2&UCA0TXIFG));                 // USCI_A0 TX buffer ready?
  UCA0TXBUF = data;  
   }

void s1_send_byte(unsigned char data)
{  
  while (!(UC1IFG&UCA1TXIFG));               // USCI_A1 TX buffer ready?
  UCA1TXBUF = data;
// delay1_ms(1);
}


void write_SegC(unsigned char * value)   //4*64
{
  char *Flash_ptr;                          // Flash pointer
  unsigned int i;

  Flash_ptr = ( char *)0x1040;               // Initialize Flash pointer
  FCTL3 = FWKEY;                            // Clear Lock bit
  FCTL1 = FWKEY + ERASE + EEI;              // Set Erase bit, allow interrupts
  *Flash_ptr = 0;                           // Dummy write to erase Flash seg

  FCTL1 = FWKEY + WRT;   
  
  for (i = 0; i < 64; i++)
  {
    *Flash_ptr++ = value;                   // Write value to flash
  }

  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
}

void  read_SegC(unsigned char * p)
{

  unsigned char *ptrd;
  unsigned char i;
  ptrd = (unsigned char *)0x1040;  
for(i=0;i<64;i++)
{
  *p=*ptrd;
  p++;
  ptrd++;
}
}




void dof(void)
{unsigned char i;
unsigned char p[64];
for(i=10;i<74;i++) p[i-10]=i;
write_SegC(p);
i=0;
}
void main( void )
{  
  unsigned char i,ADDR;
  unsigned char p[64];

  int_sys();
// BEEP_1;
// delay_1us(2000);  
   //BEEP_0;

        //读黑名单
  read_SegC(p);
  i=0;
   dof();
while(1)
{
   
   
}
}

#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCIAB0RX_ISR(void)  ///RC522
{
// s0_send_byte(UCA0RXBUF);
dof();

  
}
#pragma vector=USCIAB1RX_VECTOR        //上位机
__interrupt void USCI1RX_ISR(void)
{

}

///15829748923

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{

  
  //TM_1MS++;
  //if(TM_1MS==100) { TM_1MS=0;BEEP_0;}
  //if(TM_1MS==20000) {/ p(0xf6,0x00,0x00);
  //  TM_1MS=0;}
  //    if(TM_1MS==60000) TM_1MS=0;

}

/*
#pragma vector=PORT2_VECTOR
__interrupt void Port2()
{
if((P2IFG&BIT4) == BIT4)
{
  P2IFG &= ~BIT4; //清除中断标志
//用户代码
  ++btime;
//
}
}
*/
此帖出自信息发布论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表