OpenEdv-开源电子网

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

时间中断程序太长测得频率频率不对

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-11-25
在线时间
0 小时
发表于 2015-3-16 11:19:56 | 显示全部楼层 |阅读模式
5金钱
int main(void)
{  
delay_init();    
NVIC_Configuration(); 
 LED_Init();       
LCD_Init();
TIM2_Init(999,1199);  //1000*1200=1200000 60hz
TIM3_Init(1199,59999);//1200*60000=72M 1hz
POINT_COLOR=RED;
LCD_Clear(WHITE);
Draw_Circle(120,160,0);
  while(1) 
{

}


void TIM2_IRQHandler()
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
{
LED1=!LED1;
r1++;
if(dir)r++;
else r--;
if(r==0) dir=1;
if(r>=120) dir=0;
LCD_Clear(WHITE);
Draw_Circle(120,160,r);
LCD_ShowxNum(Column0,Line0,tnew,3,1);
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}
}
经测得LED1的频率变为15HZ,如果将LCD的程序放到while(1)中,则测得争取频率为30HZ,为什么会出现这样的情况,除了放到while(1)中还有没有其他解决方法,求解!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-16 19:12:37 | 显示全部楼层
你的中断服务函数好好精简,越短越好。
另外,中断你配置的什么边沿触发?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-11-25
在线时间
0 小时
 楼主| 发表于 2015-3-17 10:41:25 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
用的是PWM模式,计数溢出产生的更新标志
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-17 23:32:07 | 显示全部楼层
回复【3楼】WQJ:
---------------------------------
你参考下论坛的一个脉冲计数的帖子吧.统计频率,用那个帖子的方法,很好设计.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 20:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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