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

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

[复制链接]
HOOD 提问时间:2012-12-22 17:40 /
            第一部:
            内部时钟   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
收藏 2 评论5 发布时间:2012-12-22 17:40

举报

5个回答
weision 回答时间:2013-1-1 23:11:07

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

正在学STM8,进来围观。
melodyczw 回答时间:2013-10-30 13:06:40

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

你看是否是这个意思:什么都没接,TIM1的计数器是一直在计数,从0记到2000,溢出产生更新事件,进入中断,因此周期就是你设定的2000
jkm99 回答时间:2014-10-16 09:45:15

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

谢谢,
织梦狼 回答时间:2015-6-13 12:12:45
大大的有用
yangjiawei1223 回答时间:2015-9-24 09:47:39
有更完整的工程就好了   还有就是捕获可不可以 不要中断直接在main函数捕获
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版