[STM8] STM8L唤醒和串口的问题

[复制链接]
2825|1
 楼主| wangwei0952 发表于 2016-3-1 15:58 | 显示全部楼层 |阅读模式
STM8L使用Active-halt mode 模式,配置成100ms唤醒一次采集数据,功耗大概在20ua一下,已经能满足要求了,现在想测试下采集到的数据,通过串口发送出去,主时钟用HSI  2M,RTC用LSE 32.768K,唤醒后还是这样的配置,唤醒程序里面先初始化了UART,在将组织好的数据发送出去,现在问题是最后两个字节老是错的。
程序架构大致这样
int main( void )
{
    LSE_CLK();     //LSE 用作RTC时钟
    HSI_CLK(0x03);//主时钟用内部16M 8分频   2M
    PowerDownIO();
    Init_WWDG();
    Init_SpiPort();
    Powerdown_RTC();
    Lis3dh_Init();
    asm("rim");    // 允许CPU全局中断  
    while (1)
    {
          if(gs_SysRunSt.wakeup_F)//RTC唤醒处理
          {
              gs_SysRunSt.wakeup_F=0;
              GetAccAxesRaw(&data); //获取加速度数据
              Init_USART1();
              int_to_str(&data);   //组织数据
              for(i=0;i<21;i++)
              {
                  USART1_sendchar(Com_3dh[i]);
              }
          }      
          if(gs_SysRunSt.wakeup_K)
          {
              gs_SysRunSt.wakeup_K = 0;//外中断唤醒,暂时没用
              //LED_PORT=~LED_PORT;
         
          }         
          ReadTime();
          Free_WWDG();         
          asm("halt");         
    }
}
问题:
1:这种情况下最后两个字节老是错的,不知道什么原因?
2:另外现在还要外挂一个串口设备,会1s钟给我的单片机发送一次数据,在halt模式下UART不能唤醒,这块怎么怎么处理好呢?
 楼主| wangwei0952 发表于 2016-3-1 16:05 | 显示全部楼层
另外补充一下,把上面的程序 asm(“halt”)屏蔽掉,发送就是正常的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部