OpenEdv-开源电子网

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

如何控制STM32定时器在20ms内准时中断128次?

[复制链接]

12

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2012-8-14
在线时间
0 小时
发表于 2013-10-20 09:42:21 | 显示全部楼层 |阅读模式
现在在做交流电压ADC采集,计算真有效值,想实现一个周期(20ms)内采集128个点,然后通过这128个点进行有效值计算。遇到的问题:如何控制STM32定时器在20ms内准时中断128次?主程序中的代码:
      for(i=0;i<3;i++)
{
// adcx=Get_Adc_Average(ADC_CH1,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096);
//LCD_ShowxNum(156,170,temp,4,16,0);
adcx=temp;
// LCD_ShowxNum(156,170,temp,4,16,0);
LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
LCD_ShowxNum(172,170,num,3,16,0X80);
LCD_ShowxNum(172,190,mmm,3,16,0X80);
中断子程序:
void TIM3_IRQHandler(void)
{
             
if(TIM3->SR&0X0001)//溢出中断
{
 adcx=Get_Adc_Average(ADC_CH1,10);
 num++;
 //LED1=!LED1;              
}   
TIM3->SR&=~(1<<0);//清除中断标志位
mmm++;
// return adcx;    
}

主程序中设想中断4次(i 计数),但是在中断子函数中,用num和mmm计数中断次数,最后显示:num=14和mmm=15。
请高人指点错在和处?并给出解决方案,小弟在此感谢!!!








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

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2013-10-20 13:10:05 | 显示全部楼层
回复【楼主位】kingdekong:
---------------------------------
建议你用定时器触发ADC 周期是 20ms/128 这样就可以了
站在巨人的肩膀上不断的前进。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-10 19:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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