在国内国外的TI的论坛查了一下这个问题 大家的解决方法都是
1) disable PM IO port by:
HCI_EXT_MapPmInOutPortCmd(HCI_EXT_PM_IO_PORT_NONE, HCI_EXT_PM_IO_PORT_PIN7)
2) Set P0.7 to low
3) Check battery with battMeasure()
4) Set P0.7 to high
5) Enable PM IO port by:
HCI_EXT_MapPmInOutPortCmd(HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7)
具体可以参考下面的几个链接
www.deyisupport.com/.../30345.aspx
于是我修改了如下代码
if ( events & KFD_BATTERY_CHECK_EVT )
{
// Disable stack to toggle bypass control on TPS62730 (DC/DC converter)
HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_NONE, HCI_EXT_PM_IO_PORT_PIN7 );
//Set P0.7 to low
P0 &= 0x7F;
// Restart timer
if ( BATTERY_CHECK_PERIOD )
{
osal_start_timerEx( keyfobapp_TaskID, KFD_BATTERY_CHECK_EVT, BATTERY_CHECK_PERIOD );
}
// perform battery level check
Batt_MeasLevel( );
//Set P0.7 to high
P0 |= 0x80;
// Enable stack to toggle bypass control on TPS62730 (DC/DC converter)
HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7 );
return (events ^ KFD_BATTERY_CHECK_EVT);
}
但是现在的问题是这样的, 不论我注不注释掉KeyFobApp_Init( uint8 task_id ) 中这段代码:
#if defined ( DC_DC_P0_7 )
// Enable stack to toggle bypass control on TPS62730 (DC/DC converter)
HCI_EXT_MapPmIoPortCmd( HCI_EXT_PM_IO_PORT_P0, HCI_EXT_PM_IO_PORT_PIN7 );
#endif // defined ( DC_DC_P0_7 )
显示的电量还是固定的百分之二十多。
但是只要注释掉上面这段代码 而其他地方不做任何修改 反而可以正常显示
在原理上理解了为什么会是一直百分之二十多 但是代码又不是这样的
不知道哪里出了问题