初级会员

- 积分
- 77
- 金钱
- 77
- 注册时间
- 2014-10-28
- 在线时间
- 11 小时
|
本帖最后由 thmcgkl 于 2018-10-8 10:43 编辑
请教原子哥,各位大神~我写了一个程序,是关于升温之后读取计数的。在程序下载后,一切正常,正常地升温,进入中断,读取计数。但是掉电后,再重新计数,就发现只有计数不正常了,随着温度升高计数一直是0,连本底计数都没有。其它的子程序都可以正常运行,就是计数器不行。计数器的这个程序用的是TIM3,没有用到定时器的中断。纠结很久了,请大家指教~
以下程序下载后可以正常计数,只是掉电后不正常…… 请大家指教指教,多谢多谢!!!
void Counter_Init(u16 arr,u16 psc)
{
//IO口设置
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRL&=0XF0FFFFFF;//PA6浮空输入
GPIOA->CRL|=0X04000000;//复用功能
GPIOA->ODR|=1<<0;//PA6上拉
RCC->APB1ENR|=1<<1;//TIM3时钟使能
TIM3->ARR=arr; //设定计数器自动重装值//刚好1ms
TIM3-> SC=psc; //预分频器7200,得到10Khz的计数时钟
TIM3->SMCR|=5<<4; //TI1作为定时器输入
TIM3->SMCR|=7<<0; //使用从模式的外部时钟模式
TIM3->CR1|=0x01; //使能定时器3
}
//获取计数器的值
u16 GetCounter()
{
static u32 newcnt=0;
newcnt=TIM3->CNT;
TIM3->CNT=0;
return newcnt;
}
|
|