打印
[STM8]

STM8L唤醒和串口的问题

[复制链接]
2478|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

粉丝