你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
help008

help008

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
9 回答

用STM8S003做了一款小报警器,不定时重启,求指导

STM8
weihl weihl 回答时间: 2016-3-29 13:06

我之前项目里低功耗处理部分的代码, 你参考下(STM8L052R8) /******************************************************************************* ****输入:无 ****输出:无 ****端口:无 ****说明:低功耗模式开启 ****举例:lowpower_mode_on();//进入低功耗模式 ****作者: *******************************************************************************/ void lowpower_mode_on(void) {                //低功耗模式下的GPIO配置         //设置PA7,PA6,PA5,PA4,PA2为推挽输出低电平,速率2MHz         PA_DDR |= 0xf4;                                //0b1111-0100         PA_CR1 |= 0xf4;                                //0b1111-0100         PA_CR2 &= 0x0b;                                //0b0000-1011         PA_ODR &= 0x0b;                                //0b0000-1011         //设置PB7,PB6,PB5,PB4,PB3,PB2,PB1,PB0为推挽输出低电平,速率2MHz         PB_DDR |= 0xff;                                //0b1111-1111         PB_CR1 |= 0xff;                                //0b1111-1111         PB_CR2 &= 0x00;                                //0b0000-0000         PB_ODR &= 0x00;                                //0b0000-0000         //设置PC7,PC4,PC3,PC2,PC1,PC0为推挽输出低电平,速率2MHz         PC_DDR |= 0x9f;                                //0b1011-1111         PC_CR1 |= 0x9f;                                //0b1011-1111         PC_CR2 &= 0x60;                                //0b0100-0000         PC_ODR &= 0x60;                                //0b0100-0000         //PC5设置为浮空输入不带中断模式,不能设置为推挽输出低电平模式         PC_DDR_DDR5 = 0;                        //输入         PC_CR1_C15  = 0;                        //浮空         PC_CR2_C25  = 0;                        //不带中断         //设置PD7,PD6,PD5,PD4,PD3,PD2,PD1,PD0为推挽输出低电平,速率2MHz         PD_DDR |= 0xff;                                //0b1111-1111         PD_CR1 |= 0xff;                                //0b1111-1111         PD_CR2 &= 0x00;                                //0b0000-0000         PD_ODR &= 0x00;                                //0b0000-0000         //设置PE7,PE6,PE5,PE4,PE3,PE2,PE1,PE0为推挽输出低电平,速率2MHz         PE_DDR |= 0xff;                                //0b1111-1111         PE_CR1 |= 0xff;                                //0b1111-1111         PE_CR2 &= 0x00;                                //0b0000-0100         PE_ODR &= 0x00;                                //0b0000-0100         //设置PF7,PF6,PF5,PF4,PF1,PF0为推挽输出低电平,速率2MHz         PF_DDR |= 0xf3;                                //0b1111-0011         PF_CR1 |= 0xf3;                                //0b1111-0011         PF_CR2 &= 0x0c;                                //0b0000-1100         PF_ODR &= 0x0c;                                //0b0000-1100         //设置PG7,PG6,PG5,PG4,PG3,PG2,PG1,PG0为推挽输出低电平,速率2MHz         PG_DDR |= 0xff;                                //0b1111-1111         PG_CR1 |= 0xff;                                //0b1111-1111         PG_CR2 &= 0x00;                                //0b0000-0000         PG_ODR &= 0x00;                                //0b0000-0000                 //复位按键(外部中断,用于低功耗唤醒)端口初始化-PA3,低电平有效         PA_DDR_DDR3 = 0;                        //输入         PA_CR1_C13  = 1;                        //上拉         PA_CR2_C23  = 1;                        //带中断         CPU_CCR     = 0X28;                        //等级3,0最低,3最高         ITC_SPR3_VECT11SPR = 0x01;        //中断等级1(0低-->3高)         EXTI_CR1_P3IS = 0x02;           //设置lin3中断线上的触发方式为 下降沿触发                 //充电检测(外部中断)端口初始化-PC6,高电平有效         PC_DDR_DDR6 = 0;                        //输入         PC_CR1_C16  = 0;                        //浮空         PC_CR2_C26  = 1;                        //带中断                CPU_CCR     = 0X28;                        //等级3, 0最低,3最高         ITC_SPR4_VECT14SPR = 0x01;        //中断等级1(0低-->3高)         EXTI_CR2_P6IS = 0x01;           //设置lin6中断线上的触发方式为 上升沿触发                        //低功耗模式下关掉ADC         ADC1_CR1_ADON     = 0;                //关闭ADC转换                 //低功耗模式下,USART1恢复默认状态         USART1_CR1_USARTD = 1;                //关闭USART1,低功耗模式要设置为1                USART1_CR2_TIEN   = 0;                //关闭USART1发送中断         USART1_CR2_RIEN   = 0;                //关闭USART1接收中断         USART1_CR2_TEN    = 0;                //关闭USART1发送         USART1_CR2_REN    = 0;                //关闭USART1接收                 //低功耗模式下,USART3恢复默认状态         USART3_CR1_USARTD = 1;                //关闭USART3,低功耗模式要设置为1         USART3_CR2_TIEN   = 0;                //关闭USART3发送中断         USART3_CR2_RIEN   = 0;                //关闭USART3接收中断         USART3_CR2_TEN    = 0;                //关闭USART3发送         USART3_CR2_REN    = 0;                //关闭USART3接收                 //关闭主板电源,减小主电源消耗         MAIN_PWR_CTRL     = 0;                //关闭主板电源                 //打开总中断,为从HALT模式下用外部中断唤醒做准备         asm("rim");                                        //rim为开中断,sim为关中断                 //关闭内部参考电压,降低MCU电源消耗         PWR_CSR2 = 0x02;                 //关闭片内系统外设时钟         CLK_PCKENR1 = 0x00;                        //关闭片内外设时钟         CLK_PCKENR2 = 0x80;                        //关闭片内外设时钟,保留BootROM         CLK_PCKENR3 = 0x00;                        //关闭片内外设时钟                 //先清除中断标志,防止干扰进入HALT模式         EXTI_SR1_P3F = 1;                        //清除lin3线上中断标志         EXTI_SR1_P5F = 1;                   //清除lin5线上中断标志         EXTI_SR1_P6F = 1;                          //清除lin6线上中断标志         EXTI_SR1_P7F = 1;                   //清除lin7线上中断标志         TIM2_SR1_UIF = 0;                        //清除中断标志                 //进入HALT模式,只有外部中断可以唤醒         asm("halt"); }

赞0
help008 help008


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16