你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 14960|回复: 5

希望我这个对正在用STM8S做输入捕获,测频的有帮助!

[复制链接]

2

主题

11

回帖

0

蝴蝶豆

中级会员

最后登录
2020-8-21
发表于 2012-12-22 17:40:16 | 显示全部楼层 |阅读模式
            第一部:
            内部时钟   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);  //16M
            
            第二步:
            配置IO口 我用的是STM8S103k3t6       
            GPIO_Init(GPIOB , GPIO_PIN_0 , GPIO_MODE_IN_PU_NO_IT);//TIM1_CH1   PB0端口
            
            第三步:TIM1初始化,
            注意:
            tim1 分频是16000000/1600 =10000
            那计数一下的时间是!1/10000 S
            向上计数 0到20000  的时间是2S
            
            
            void TIME1_INIT(void)
            {
               TIM1_DeInit();
               TIM1_TimeBaseInit(1600, TIM1_COUNTERMODE_UP, 20000, 0);
               TIM1_ICInit( TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI , TIM1_ICPSC_DIV8, 0x0);
               TIM1_ITConfig( TIM1_IT_CC1 , ENABLE);
               TIM1_ClearFlag(TIM1_FLAG_CC1);
               TIM1_Cmd(ENABLE);
            }
            
            
            第四步: TIM4用来产生溢出中断用的!
            
            void TIME4_INIT(void)
            {
               TIM4_TimeBaseInit(TIM4_PRESCALER_32 ,250);
               TIM4_ARRPreloadConfig(ENABLE);
               TIM4_PrescalerConfig(TIM4_PRESCALER_32,TIM4_PSCRELOADMODE_IMMEDIATE);
               TIM4_SetAutoreload(250);
               TIM4_Cmd(ENABLE);                  
               TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE);   
            }
            
            
            第五步: TIM1的中断程序  连续进入两次中断,两次计数的值 乘 第三步中计数一下的时间 就是脉宽
            
            //   if(TIM1_GetFlagStatus(TIM1_FLAG_CC1))
               if(TIM1_GetITStatus(TIM1_FLAG_CC1) != RESET)         
               {
                   switch(temp)
                   {
                      case 0: ICValue1=TIM1_GetCapture1();
                              temp=1;
                              break;
                                                                                   
                      case 1: ICValue2=TIM1_GetCapture1();
                              temp=2;
                              break;
                                                   
                     default:
                    TIM1_CCxCmd(TIM1_CHANNEL_1, DISABLE);
                            TIM1_ITConfig(TIM1_IT_CC1, DISABLE);       
                            temp=3;
                            break;
                   }
                   TIM1_ClearITPendingBit(TIM1_IT_CC1);       
                   TIM1_ClearFlag(TIM1_FLAG_CC1);
               }
            
            
            
            第六步:
            TIM4的中断程序
                     if(temp==3)
                     {
                      temp=0;
                    if(ICValue2>ICValue1)
                    {
                       disvalue=ICValue2-ICValue1;
                     }
                    else if(ICValue210) i0=0;
                    display();
                    TIM1_CCxCmd(TIM1_CHANNEL_1, ENABLE);
                            TIM1_ITConfig(TIM1_IT_CC1, ENABLE);
                      }
                              else
                      {
                       display();
                      }
                    TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
            
            
            
            我现在又个问题!我硬件上   PB0 TIM1的捕获口不接任何东西的情况下
            TIM1_ICPSC_DIV8 时 得到的  disvalue 值是40
            TIM1_ICPSC_DIV1   得到的  disvalue   的值是 5
            
            好像精确的不得了  时间那就是 两脉宽时间差是   5/10000S   =  2000HZ 这个到底是什么值  输入口不接任何东西也能进去 捕获中断!
            

             
            图片是我的输入端 接入方法!
             
            我最不明白的就是  为什么 什么都不接 能进入中断
             
            
122.JPG
回复

使用道具 举报

0

主题

4

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-1-1 23:11:07 | 显示全部楼层

回复:希望我这个对正在用STM8S做输入捕获,测频的有帮助!

正在学STM8,进来围观。
回复 支持 反对

使用道具 举报

2

主题

12

回帖

0

蝴蝶豆

初级会员

最后登录
2020-10-6
发表于 2013-10-30 13:06:40 | 显示全部楼层

RE:希望我这个对正在用STM8S做输入捕获,测频的有帮助!

你看是否是这个意思:什么都没接,TIM1的计数器是一直在计数,从0记到2000,溢出产生更新事件,进入中断,因此周期就是你设定的2000
回复 支持 反对

使用道具 举报

0

主题

9

回帖

0

蝴蝶豆

初级会员

最后登录
2020-7-6
发表于 2014-10-16 09:45:15 | 显示全部楼层

回复:希望我这个对正在用STM8S做输入捕获,测频的有帮助!

谢谢,
回复 支持 反对

使用道具 举报

6

主题

85

回帖

0

蝴蝶豆

高级会员

最后登录
2020-7-23
发表于 2015-6-13 12:12:45 | 显示全部楼层
大大的有用
回复 支持 反对

使用道具 举报

0

主题

11

回帖

0

蝴蝶豆

初级会员

最后登录
2019-12-27
发表于 2015-9-24 09:47:39 | 显示全部楼层
有更完整的工程就好了   还有就是捕获可不可以 不要中断直接在main函数捕获
回复 支持 反对

使用道具 举报

关于 意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版