删除__low_power_mode_3()后,不能进入中断服务程序;
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模式,才能进入串口中断服务程序。
必须加上这句 __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模式,才能进入串口中断服务程序。