cc2541驱动马达,关不掉机
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的原因。
麻烦帮我分析一下,
谢谢
祝好!
关。