OpenEdv-开源电子网

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

求助,原子哥,各位大神啊

[复制链接]

2

主题

3

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2014-5-7
在线时间
0 小时
发表于 2014-5-7 16:55:13 | 显示全部楼层 |阅读模式
5金钱
这个是main里的
        TIM3->SC&=0x0000;
        TIM3->SC|=0x0047;  
        selectchannel(7); //风扇1
           DutyCycle_flag=7;
           delay(5);
           TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); 
           delay(5);
           TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);
           TIM_ITConfig(TIM3, TIM_IT_CC2, DISABLE); 

其中, selectchannel(7);是模拟开关的选择通道

这个是STM32F10X_IT.C里中断的
    switch(DutyCycle_flag)
。。。。。。。。
case 7:
                     IC2Value = TIM_GetCapture2(TIM3);
                     if (IC2Value != 0 && 49<= ((TIM_GetCapture1(TIM3) * 100) / IC2Value) && ((TIM_GetCapture1(TIM3) * 100) / IC2Value)<= 51)
                      {
                       Frequency1 = 1000000 / IC2Value;
                       study[10]=Frequency1*15/256;
                       study[11]=Frequency1*15%256;
                      }
                      else
                     {                       
                       Frequency1 = 0;
                        study[10]=0;
                        study[11]=0;
                      }
               break;
一共有9个风扇,检测风扇的转速,采集的信号都通过模拟开关最终连到TIM3的2通道,风扇转速这个信号是个占空比50%的方波,用了个串口屏显示这些转速,一次显示4行,循环显示;整个程序在风扇都转的时候没什么问题,都显示正常转速,拔掉一个风扇,此时转速显示0;
问题是,一旦把风扇的电源线一下断掉,或是拔掉全部风扇,就会有个别风扇的转速不显示0,而显示断电前显示的转速。
我把main里的风扇的顺序变了好多中顺序,会出状况的风扇不定。。。
有什么思路?有空的大神,留个联络方式,我把整个程序、原理图什么的发给你,

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

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-7 18:03:53 | 显示全部楼层
这样的话你就要判断风扇是否在线才行
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

2

主题

3

帖子

0

精华

新手入门

积分
31
金钱
31
注册时间
2014-5-7
在线时间
0 小时
 楼主| 发表于 2014-5-8 17:23:29 | 显示全部楼层
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2 ; //选择2通道
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //捕获上升沿
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //对应相连
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //1个上升沿执行一次捕获
TIM_ICInitStructure.TIM_ICFilter = 0x00; //输入比较滤波器
TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);    //初始化TIM3至输入PWM模式
/* 选择TIM4输入触发源: TIM 经滤波定时器输入 2  */
TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2); //选择TIM3触发源2
/* 选择从机模式:复位模式 */
TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset); //选择触发信号的上升沿重初始化计数器并触发寄存器更新  
/* 开启复位模式 */
TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable); //主从模式使能
/*  开启 CC2 中断*/        
        TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); //失能TIM3通道2中断???DISABLE ENABLE
TIM_Cmd(TIM3, ENABLE); //使能TIM3外设
本来是采集方波信号的,上升沿开始计时。。。断电后,这个信号就成了高电平,这个怎么算?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 00:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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