微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541驱动马达,关不掉机

cc2541驱动马达,关不掉机

时间:10-02 整理:3721RD 点击:

ti工程师,你好

   问一下,控制板上按键关机,跟app关机是一样处理吗?

不一样怎么处理?

是否关机前,必须先停马达?

谢谢

lincoln

你好,

你描述的问题不清楚。

你使用的是TI的demo板吗?

参考的什么程序?

你好,michael

我是用keyfob改的。用防丢器的原理图layout板呀,关机函数如下:

poweroff()

{

             osal_stop_timerEx( gapRole_TaskID, START_ADVERTISING_EVT);
             osal_stop_timerEx( gapRole_TaskID, CONN_PARAM_TIMEOUT_EVT);
             osal_stop_timerEx( gapRole_TaskID, RSSI_READ_EVT);
             osal_stop_timerEx( gapRole_TaskID, START_CONN_UPDATE_EVT );

             osal_stop_timerEx (Hal_TaskID, HAL_SLEEP_TIMER_EVENT);
             osal_stop_timerEx(Hal_TaskID, HAL_LED_BLINK_EVENT);
             osal_stop_timerEx( Hal_TaskID, HAL_KEY_EVENT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_START_DEVICE_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_BATTERY_CHECK_EVT );
             
             osal_stop_timerEx( keyfobapp_TaskID,KFD_ACCEL_READ_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_TOGGLE_BUZZER_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_ADV_IN_CONNECTION_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_POWERON_LED_TIMEOUT_EVT );
             osal_stop_timerEx(Hal_TaskID, HAL_PWRMGR_CONSERVE_EVENT);
         
             osal_stop_timerEx(Hal_TaskID,HAL_BUZZER_EVENT);
             osal_stop_timerEx(Hal_TaskID,PERIOD_RSSI_RESET_EVT);
             osal_stop_timerEx(Hal_TaskID,HAL_LED_BLINK_EVENT );  
             osal_stop_timerEx(Hal_TaskID,HAL_PWRMGR_HOLD_EVENT);

          osal_pwrmgr_device( PWRMGR_BATTERY );
          GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ),FALSE);                           
          GAP_SetParamValue( TGAP_LIM_ADV_TIMEOUT,4);//30//1 is too short advertisement VTAG gyh only advertise //0 is not ok
          GAPRole_TerminateConnection();

}

是否还漏掉了什么?这个问题困扰了好久,一直没找到原因。总感觉跟按键中断,查询事件有关。要不怎么按键老没反应呢?

谢谢

lincoln

测试最小系统,包括pwm和io中断!

你好

    按你的要求,我在keyfob源程序直接改测试关机程序(其它功能都没改了),关机程序poweroff()加了p1=0,p2=0,除p0_1外(做按键用),p0上的脚也清零。还是不行。我把原来防丢器的固件down进去,用手机app能关机(原来防丢器只能app关机,没要求开关关机,调用的都是poweroff()函数),这次搞马达按摩要求开关关机。从这里判断好像硬件没问题。感觉固件关于按键扫描,中断引起的。但始终找不到方向。希望能得到指点。

谢谢

lincoln

你好!

是否可能 调用程序放的地方不对。

我是放在keyfob

static void keyfobapp_HandleKeys( uint8 shift, uint8 keys )
{

******

******

*******

if( longkey=1)//满足长键要。

POWERoff()

}

程序调用了poweroff(),马达停掉,按键锁死。

谢谢

lincoln

你好,

      长键扫描是否会导致中断什么的没处理。

谢谢

祝好

lincoln

你好,ti工程师

 我发现用按键关机是停键事件导致键死锁。

 我关了这个事件:osal_stop_timerEx( Hal_T askID, HAL_KEY_EVENT ),

但没关这个事件,应该没进入pm3吧。马达是关了。

用按键关机后,我发现再按键,有时发现进入广播(灯闪),有时不进入。没确定什么原因。

奇怪的是,机器好像记住上次马达旋转的方式。关机后,再开机,就接着上次关机前的马达方式转,而不是初始化的情况。

这也是我判断没真正进入pm3的原因。

麻烦帮我分析一下,

谢谢

祝好!

关。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top