本来今天PWM的.这个我在STC里应用得不错.主要做指示用,如呼吸灯.
本来今天PWM本人很懒,不想去设多一个IO为输入(因为原子的实验是PA7和PA8短接),看了参考手册P119页,发现PA8有现成的对应定时器,那就是TIM1的CH1(频道1).
但原子的书没说,什么办呢,有了,我们昨天==>STM32 学习笔记 定时器 51民工要注意的地方 的功课再来实现一下,改成TIM1(昨天的是TIM3)
好,我们改一下昨天的代码,因为TIM1到TIM8的结构都一样,这样就改了:
// 定时器中断函数 **************************************************************************************
void Timer3_init(u16 arr,u16 psc)
{
RCC->APB2ENR|=1<<11; //time1 使能 参考手册 P91
TIM1->ARR=arr; //设定计数器自动重装值 P254
TIM1->  SC=psc; //分频器值
TIM1->DIER |=1<<0; //可见中断使能寄存器的值一上默认是0x00
TIM1->DIER |=1<<6;
TIM1->CR1 |=0X01;
NVIC->ISER[0]|=1<<25; //使能TIM1的中断函数
}
主要是这句难倒我了====>NVIC->ISER[0]|=1<<25; //使能TIM1的中断函数
因为TIM1有几个中断函数!!!我帖上来给大伙看一下:
24号 TIM1_BRK_IRQChannel
25号 TIM1_UP_IRQChannel
26号 TIM1_TRG_COM_IRQChannel
27号 TIM1_CC_IRQChannel
从24号到27号是那个呢,
24号 TIM1_BRK_IRQChannel <<===这个参考手册上说是刹车,我想不是这个
25号 TIM1_UP_IRQChannel <<====这个参考手册上说是更新,我猜是这个,看对不对
26号 TIM1_TRG_COM_IRQChannel <<====这个可能是COM口的中断定时器,和51差不多,但没找到相关的资料,我猜的.
27号 TIM1_CC_IRQChannel <<=========这个可能是输入或输出捕获用的.我想这个一定不是.
好丢25号就去看看.如上代码.
好,服务代码:
// 定时器中断 服务 函数 **********************************************************************************
void TIM1_UP_IRQHandler(void)
{
if(TIM1->SR&0X0001)//溢出中断
{
LCD_LED=!LCD_LED;
}
TIM1->SR&=0xfffe;//~(1<<0);//清除中断标志位
}
将昨天的3改成1就成了,最主要是注意===>TIM1_UP_IRQHandler(void) 中断函数号改了.
主程式木有变,编译后丢板子,看~~~~~~~~~~~~~~~~~~~~一样的闪呀闪 ^_^ Y
然后验证一下24,26,27丢进去,然后对应的TIM1_BRK_IRQHandler(void), TIM1_TRG_COM_IRQHandler(void),TIM1_CC_IRQHandler(void)函数名也更改,看行不行,
结果如我所想,不产生中断!!
24,26,27中断我们还没找到相关的资料,我科就暂时不学了,先不理他,要不然会产生郁闷感.哈哈!! |