完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
|
|
|
|
定时器2初始化部分:
void ext_TIM2_Config(uint8_t mode) { CLK->PCKENR1 |= 0x1; // tim2 TIM2->CR1 = 0x00; if(mode == 0) { //CLK:8MHz 1Hz TIM2->PSCR = 0x7; TIM2->CNTRH = 0; TIM2->CNTRL = 0; TIM2->ARRH = 62500u >> 8; TIM2->ARRL = 62500u & 0xFF; TIM2->IER |= 0x1; //允许中断 } else { //CLK:38K 1Hz TIM2->PSCR = 0x0; TIM2->CNTRH = 0; TIM2->CNTRL = 0; TIM2->ARRH = 38000u >> 8; TIM2->ARRL = 38000u & 0xFF; TIM2->IER &= ~0x1; //不允许中断 //TIM2->IER |= 0x1; } #ifdef _COSMIC_ #pragma section (LPRUN) void LPR_Ram(void) #endif #ifdef _RAISONANCE_ void LPR_Ram(void) inram #endif #ifdef _IAR_ #pragma location="MY_RAM_FUNC" void LPR_Ram(void) #endif { #if 0 uint8_t i = 0; /* To reduce consumption to minimal Swith off the Flash */ FLASH->CR1 = 0x08; while(((CLK->REGCSR)&0x80)==0x80); /* Swith off the Regulator*/ CLK->REGCSR = 0x02; while(((CLK->REGCSR)&0x01)==0x01); /* Set trigger on GPIOE pin6*/ WFE->CR2 = 0x04; GPIOE->CR2 = 0x44; for (i=0; i<100; i++); /* To start counter on falling edge*/ GPIO_LOW(CTN_GPIO_PORT,CTN_CNTEN_GPIO_PIN); /*Wait for end of counter */ wfe(); GPIOC->ODR ^= 0x80; EXTI->SR1 |= 0x40; WFE->CR2 = 0x00; //Switch on the regulator CLK->REGCSR = 0x00; while(((CLK->REGCSR)&0x1) != 0x1); #else uint8_t i; FLASH->CR1 = 0x08; while(((CLK->REGCSR)&0x80)==0x80); CLK->REGCSR = 0x02; while(((CLK->REGCSR)&0x01)==0x01); // ------------------------------------------------------- WFE->CR1 = 0x01; // tim2 wakeup update CLK->PCKENR1 |= 0x1; TIM2->CR1 |= 0x1; //使能唤醒 //for(i = 0;i < 100;i++); wfe(); GPIOC->ODR ^= 0x80; //禁止唤醒 TIM2->SR1 &= ~0x1; WFE->CR1 = 0x00; //--------------------------------------------------------- //Switch on the regulator CLK->REGCSR = 0x00; while(((CLK->REGCSR)&0x1) != 0x1); #endif } |
|
|
|
STM8L,TIM2没有溢出事件
|
|
|
|
将CPU从从WFE模式唤醒有两个途径:中断或者wakeup事件。
|
|
|
|
RM0031中描述,由中断唤醒,中断执行完毕后会回到WFE模式。
|
|
|
|
即使使用事件唤醒,也要执行TIM2->IER |= 0x1; //允许中断
|
|
|
|
到事件后,无需再判断FLASH是否准备好,无需再执行while(((CLK->REGCSR)&0x80) != 0x80);
|
|
|
|
贴的程序里面只需允许TIM2中断即可,只是昨天用的discovery板子,IDD跳线帽跳置ON端导致LED点亮时,有闪烁现象,致使我怀疑程序有问题
|
|
|
|
只是不清楚为什么从WFE醒来后,不能再判断FLASH是否准备好,不明白
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:40 , Processed in 1.016142 second(s), Total 90, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号