msp430的串口在LPM3下才能工作,例程

删除__low_power_mode_3()后,不能进入中断服务程序;

必须加上这句 __low_power_mode_3()后,进入LPM3模式,才能进入串口中断服务程序。

void UART_send_str(uint8_t* data,uint8_t length)//发送一个字符串的函数

{
    uart_info.data=data;                        //uart_info为包含uart信息的结构体
    uart_info.length=length;
    uart_info.state=UART_WRITING;


    
    HWREG16(uart_info.base_addr + OFS_UCAxIE) |= 0x0002u; //软件设置中断请求


    HWREG16( uart_info.base_addr + OFS_UCAxCTLW0) |= 0x0000u;//使能中断


     while (uart_info.state == UART_WRITING)
    {
     __low_power_mode_3(); //进入LPM3模式
    }
}


uint8_t UCA0_ISRCallBack(uint16_t flag, void* data)//中断回调函数,即中断服务程序

if(uart_info.length>0)
    {
          uart_info.length--;
          HWREG16(uart_info.base_addr + OFS_UCAxTXBUF) = *(uart_info.data++);//输出char
          uart_info.state=UART_WAITING;
          return 1;
          }
   else if(uart_info.length==0)
         {
          HWREG16(uart_info.base_addr + OFS_UCAxIE) &= ~0x0002u;//关中断
          HWREG16(uart_info.base_addr + OFS_UCAxCTLW0) &= ~0x0000u;//关中断
          uart_info.state=UART_WAITING;
          return 1;
          }
}


删除__low_power_mode_3()后,不能进入中断服务程序;
必须加上这句 __low_power_mode_3()后,进入LPM3模式,才能进入串口中断服务程序。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值