OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8869|回复: 6

STM32 学习笔记 定时器 51民工要注意的地方

[复制链接]

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
发表于 2012-7-6 02:35:53 | 显示全部楼层 |阅读模式
 玩好了TFT,NRF24后,兴备的我们开始回归蕊片的本身学习了.
我们开始学习它的定时器.
我写了定时器3的初始化代码:

void Timer3_init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1;  //time3 使能 参考手册 P92
TIM3->ARR=arr;  //设定计数器自动重装值  P254
TIM3->SC=psc;  //分频器值
TIM3->DIER |=1<<0;   //可见TIMx的值一上默认是0x00
TIM3->DIER |=1<<6;

TIM3->CR1 |=0X01;

NVIC->ISER[0]|=1<<29;    //使能TIM3的中断函数
}

然后是定时器中断服务代码:

void TIM3_IRQHandler(void)
{
    LCD_LED=!LCD_LED;    <<==============简简单单我们就用屏的LED
    TIM3->SR&=0xfffe;     //清除中断标志位
}


主函数很简单,啥都不做就等中断:
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
LCD_IO_Init();
LCD_init();

Timer3_init(5000,7199);

B_COLOR=color(30,60,30);
clear_lcd();
LCD_LED=0;   

  while (1) 
    {   
;
    }//end of while(1)
}

编译后丢板子,发现没,没有动静!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

51民工们,是不是很奇怪,不动!!我查了几次,代码没有错!!!!!!  为啥没反应!!!!!!!  经验告诉我   LED跳得太快是不会动的 这和电路图中接的三极管的频率参数有关,变化太快!!!!

于是我将服务代码变了下:

void TIM3_IRQHandler(void)
{
    LCD_LED=1;    <<==============简简单单我们就用屏的LED
    TIM3->SR&=0xfffe;     //清除中断标志位
}

编译后丢板子,发现没,有动静!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!屏亮了!!!
就是说 有进中断!!! 为啥呢??? 我猜了一下,是不是这蕊片无时无刻地跑进来??? 好,我又改了下代码.

void TIM3_IRQHandler(void)
{

    LCD_LED=!LCD_LED;
    delay_ms(200);
    TIM3->SR&=0xfffe;//~(1<<0);//清除中断标志位
}

编译后丢板子,发现没,有动静!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!屏闪了!!!

明白了,傻片片以某种我们菜鸟们不清楚的速度进来中断服务程式!!!!!!!囧了呀.......... 这不是无时无刻地进入中断吗,我们51民工真不明白咧..........不是条件到了才进来的吗???
就象MM在房里换衣服,说好过一定的时间进去接她,但这里是一秒进去N次看MM换好衣服没.那之前说好的条件有鸟用呀~~~~~~~~囧囧囧~~~~~~~~~~
望各位高人指点.

现在只能这样了, MM在房里换衣服,说好过一定的时间进去接她,然后在门口申个头进去(上边的头不是下边的头)看,对了,只是眼睛飞快去眨而已,看到MM换完衣服了,就敲敲门说:MM,时间到,我进来了!
囧了~~~~~~~

代码如原子的没什么分别:

void TIM3_IRQHandler(void)
{
if(TIM3->SR&0X0001)//溢出中断
{
LCD_LED=!LCD_LED;
}
TIM3->SR&=0xfffe;//~(1<<0);//清除中断标志位
}


if(TIM3->SR&0X0001)<<==盯着MM换衣服眼睛飞快去眨呀眨忆  ^-^ 新片片就是有爱呀,MM换衣服的房间木有门哟~~~~~~~~~
我的工作就是天天在玩
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-7-6 02:38:59 | 显示全部楼层
void TIM3_IRQHandler(void)
{


    LCD_LED=!LCD_LED;
    delay_ms(200);
    TIM3->SR&=0xfffe;//~(1<<0);//清除中断标志位 
}
直接写成:
void TIM3_IRQHandler(void)
{


    LCD_LED=!LCD_LED;
    delay_ms(200);
  }

一样有效~~~~~~囧~~~~~~~
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-7-6 02:39:49 | 显示全部楼层
只是没有定时效果而已......

玩玩可以,如要做正事是做不了的,系统无时无刻地进入中断执行你的中断服务程式.囧......
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-7-6 04:01:25 | 显示全部楼层
明天我们开搞PWM,原子书里说得太囧了,漏了说AFIO_MAPR.看了我半天找不到北,不同的定时器对应的那频道又是对应的那个脚,摸了半天脑瓜就是明白不过来,囧死了.
大家看下参考手册119页.结合原子的书才会明白的.明晚再玩PWM了.

囧了,我想搞个呼吸屏都搞不了了,PC10脚没有对应的定时器.还是老老实实点个LED灯吧.
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-7-6 04:06:44 | 显示全部楼层
呼吸屏帅咧~~~~~~~~~~

我以前设计过一个主控板,显示屏就是呼吸屏,帅呆了.机器不工作时慢呼吸,工作是快呼吸,工作速度越快呼吸越快.

有一工厂老板第一次见这情况问我: 喂,老大,你的屏是不是电压不稳定呀,怎么老在闪呀???    偶内牛满面.......T.T
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-6 09:33:22 | 显示全部楼层
呵呵....
回复 支持 反对

使用道具 举报

71

主题

467

帖子

0

精华

高级会员

Rank: 4

积分
800
金钱
800
注册时间
2011-11-18
在线时间
5 小时
 楼主| 发表于 2012-7-9 19:47:42 | 显示全部楼层
这是不是传说中的流水线呀。。。。。。
我的工作就是天天在玩
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 14:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表