打印

stm8L052 进入halt模式

[复制链接]
6116|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xp1314520|  楼主 | 2013-3-18 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、请问STM8L052 如何进入HALT MODE,用什么语句?在库里面没找到halt();这个子函数啊。
2、进入了halt以后又怎样唤醒呢?唤醒用什么语句?用什么方式唤醒啊?
菜鸟一大堆问题,望有高手指点迷津,在下感激不尽。给个例子也可以啊
沙发
tianyalingyin| | 2013-3-18 22:37 | 只看该作者
看头文件 找 |Halt|

#define wfi()                 _wfi_()  /* Wait For Interrupt */
#define halt()                _halt_() /* Halt */

不同的芯片的唤醒方式不一样,外部唤醒一般都可以|
@far @interrupt void PA3_Exit_Int_Isr (void)
{
        Timer_Pwr_Halt_Enter_Cnt=0;
}|

使用特权

评论回复
板凳
xp1314520|  楼主 | 2013-3-19 22:07 | 只看该作者
万分感谢

使用特权

评论回复
地板
xp1314520|  楼主 | 2013-3-30 00:32 | 只看该作者
tianyalingyin 发表于 2013-3-18 22:37
看头文件 找 |Halt|

#define wfi()                 _wfi_()  /* Wait For Interrupt */

你好,halt();进入睡眠模式,但是放在哪个位置呢?唤醒语句又放在哪个位置啊?求指教

使用特权

评论回复
5
tianyalingyin| | 2013-3-30 21:57 | 只看该作者
xp1314520 发表于 2013-3-30 00:32
你好,halt();进入睡眠模式,但是放在哪个位置呢?唤醒语句又放在哪个位置啊?求指教 ...

呵呵,halt()放在任务处理完后;也就是main里的while这个超级循环内,

STM8S103支持IO的中断唤醒,在中断文件(stm8_interrupt_vector.c)里做中断设置:
struct interrupt_vector const _vectab[] = {
        {0x82, (interrupt_handler_t)_stext}, /* reset */
        {0x82, NonHandledInterrupt}, /* trap  */
        {0x82, NonHandledInterrupt}, /* irq0  External top level interrupt*/
        {0x82, NonHandledInterrupt}, /* irq1  Auto wake up from halt*/
        {0x82, NonHandledInterrupt}, /* irq2  Clock controller*/
        {0x82, PA3_Exit_Int_Isr   }, /* irq3  Port A external interrupts*/
        {0x82, NonHandledInterrupt}, /* irq4  Port B external interrupts*/
        {0x82, NonHandledInterrupt}, /* irq5  Port C external interrupts*/
        {0x82, NonHandledInterrupt}, /* irq6  Port D external interrupts*/
        {0x82, NonHandledInterrupt}, /* irq7  Port E external interrupts*/
        {0x82, NonHandledInterrupt}, /* irq8  Reserved*/
        {0x82, NonHandledInterrupt}, /* irq9  Reserved*/
        {0x82, NonHandledInterrupt}, /* irq10 SPI End of transfer*/
        {0x82, NonHandledInterrupt}, /* irq11 TIM1 update/ overflow/ underflow/trigger/ break*/
        {0x82, NonHandledInterrupt}, /* irq12 TIM1 capture/ compare*/
        {0x82, NonHandledInterrupt}, /* irq13 TIM2 update/ overflow*/
        {0x82, NonHandledInterrupt}, /* irq14 TIM2 capture/ compare*/
        {0x82, NonHandledInterrupt}, /* irq15 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq16 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq17 UART1 Tx complete*/
        {0x82, NonHandledInterrupt}, /* irq18 UART1 Receive register DATA FULL*/
        {0x82, NonHandledInterrupt}, /* irq19 I2C interrupt*/
        {0x82, NonHandledInterrupt}, /* irq20 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq21 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq22 ADC1 end of conversion/ analog watchdog interrupt*/
        {0x82, NonHandledInterrupt}, /* irq23 TIM4 update/ overflow*/
        {0x82, NonHandledInterrupt}, /* irq24 EOP/WR_PG_DIS*/
        {0x82, NonHandledInterrupt}, /* irq25 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq26 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq27 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq28 Reserved*/
        {0x82, NonHandledInterrupt}, /* irq29 Reserved*/
};

中断函数如下:

@far @interrupt void PA3_Exit_Int_Isr (void)
{
//  ADD TASK CODE HERE
       
}

使用特权

评论回复
6
xp1314520|  楼主 | 2013-3-30 22:12 | 只看该作者
tianyalingyin 发表于 2013-3-30 21:57
呵呵,halt()放在任务处理完后;也就是main里的while这个超级循环内,

STM8S103支持IO的中断唤醒,在中断 ...

谢谢哦,想用定时器中断来唤醒,现在就是不知道在进入avtive-halt之前怎样设置唤醒方式啊?
关于唤醒需要看哪一部分的资料呢 ?刚刚学这个,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

57

帖子

1

粉丝