微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 系统启动时初始化P0.3和P0.4过程中电平跳变的问题

系统启动时初始化P0.3和P0.4过程中电平跳变的问题

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

我在系统启动时初始化P0.3和P0.4为输出0,并一直保持。但是发现系统初始化的过程中,P0.3和P0.4不到一秒钟短暂的输出1,又恢复输出0。
进而在MAIN函数中打断点,在while(1),while(2),while(3)处分别死循环测试,发现在while(1),while(2)处死循环,都不会出现短暂的输出1的现象。到while(3)处死循环,就发现短暂的输出1的现象。
看来是osal_init_system()调用里面有对GPIO的操作,但是进入进去却又找不到相关代码。特来求助,谢谢帮助!

下面是预设值和代码:

INT_HEAP_LEN=3072
HALNODEBUG
OSAL_CBTIMER_NUM_TASKS=1
HAL_AES_DMA=TRUE
HAL_DMA=TRUE
xPOWER_SAVING
xPLUS_BROADCASTER
xHAL_LCD=FALSE
xHAL_LED=FALSE
xHAL_UART=FALSE

 

int main(void)
{
 /* Set to 16Mhz to set 32kHz OSC, then back to 32MHz */
 START_HSOSC_XOSC();
 SET_OSC_TO_HSOSC();
 SET_32KHZ_OSC();
 SET_OSC_TO_XOSC();
 STOP_HSOSC();
 /* Turn on cache prefetch mode */
 PREFETCH_ENABLE();
 // Interrupts off
 HAL_DISABLE_INTERRUPTS();

 P0DIR |= BV(3)|BV(4);
 P0 &= ~(BV(3)|BV(4));
 /* Initialze the HAL driver */
 HalDriverInit();

//while(1);

 /* Initialize NV system */
 osal_snv_init();

//while(2);

 /* Initialize LL */

 /* Initialize the operating system */
 osal_init_system();

while(3);

 /* Enable interrupts */
 HAL_ENABLE_INTERRUPTS();

 #if defined ( POWER_SAVING )
 osal_pwrmgr_device( PWRMGR_BATTERY );
 #else
 osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
 #endif

 /* Start OSAL */
 osal_start_system(); // No Return from here

 return 0;
}

osal_init_system() 不是循环的函数,且只调用一次,不会更改GPIO的状态。你可以查看一下GPIO你是否配置了P0.3 0.4 为输出,并且保证P0SEL配置成普通IO

用单步调试发现以下在simpleBLEPeripheral.c文件中的这两个调用对P0.3和P0.4有影响,导致管脚电平跳变。但是这个是库函数,没有代码了,不知道TI官方是如何处理的?

 // Initialize GATT attributes
 GGS_AddService( GATT_ALL_SERVICES );   // GAP
 GATTServApp_AddService( GATT_ALL_SERVICES ); // GATT attributes

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

网站地图

Top