cc2541 计算霍尔-频率

1、平台条件

1:硬件cc2541

2 通过霍尔传感器计算频率

利用外部io中断的,计算霍尔脚踏板的频率
主要思想:
1:一个边沿进来,就清除定时器的值并开始计数,:
2:下一个边沿进来,就读定时器的计数,并清除,再重新开始计数。
3:读出来的值就是周期。然后计算频率

2.1 外部中断引脚的设置

void hal_io_Init(void)    
{     
    P2SEL &= ~(1 << 0); //P2.0设置为IO口    
    P2DIR &= ~(1 << 0); //P2.0设置为输入    
    P2INP &= ~(1 << 0); //P2.0上拉下拉模式        
    P2INP &= ~(1 << 7); //P2上拉       
    P2_0 = 1;           //P2.0拉高           
    P2IFG &= ~(1 << 0); //初始化P2.0中断标志位    
    PICTL |= (1 << 3);  //下降沿触发     
    P2IEN |= (1 << 0);  //使能P2.0中断      
    IEN2 |= (1 << 1);   //允许P口中断; 

}    
    
static uint32  P20_timer_cac = 0; // 定时器计数----、、、
static uint8   is_stop_P20_timer_fla = 1;// 1:表示停止   ,0表示正在开始定时器
//static uint8 P20_isr_times = 0;// 中断次数


uint8 frue_aa =0;

#pragma vector = P2INT_VECTOR        
__interrupt void P2_ISR(void)     
{  
     //p2.0 拉低------- 
     if(!(P2 & (1 << 0)) )  
     { 
       // 1: 计算频率--------
       if(P20_timer_cac)
       {
          montor_dat.frequency = 1000/P20_timer_cac;       
       }      
                                
       //  step 2:重新清0,
       P20_timer_cac =0;  
       
       // step 3: 定时器是否停止过, 
       if(is_stop_P20_timer_fla==1)
       {
           is_stop_P20_timer_fla =0;
           //开始定时器循环
          osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_HAL_CYCLE, TIME_PORI );  
       }      
       if(motor_turn_sta!=2)
       {         
            montor_dat.Turn_dir =1; // 正传
            motor_turn_sta =1;
       }        
       set_devie_on_sta ();      
     }

     P2IFG = 0;       //清中断标志     
     P2IF = 0;        //清中断标志  

     P2IFG = 0;       //清中断标志     
     P2IF = 0;        //清中断标志    
}
/**********************************************
*
* ------- 计算频率--------
*
******************************************/
void calcu_frequency_handle(void)
{    
   // 累加定时器变量  
   P20_timer_cac+=TIME_PORI;
   
   // 2s //
//   if(P20_timer_cac>(2000/50))
//   {  
//     montor_dat.frequency = 0; 
 //    is_stop_P20_timer_fla =1;
 //    osal_stop_timerEx( simpleBLEPeripheral_TaskID, SBP_HAL_CYCLE);
//   }
}

可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值