工具/软件:TI C/C++编译器
由于某些初始化错误、无法重置微控制器。 在 autoinit.h 函数中调试函数时、系统会运行到 breakpoint_2 (请参阅下文)、我按"run"、但系统永远不会返回到 BREAKPINT_1、但它在控制台中显示错误
控制台
断言失败、(!(((*(volatile uint16_t *)(uint16_t) baseAddress +(0x0000)))和(0x0002)))、文件./driverlib/adc12_a.c、第1行
上面引用的代码。 我该怎么做?
/********* //* cinit */ ********* / static __inline __attribute__(always_inline) void run_cinit (void) { #if defined (__TI_EABI _)&& 已定义(__MSP430__)&& 已定义(__large_code_model__)&&!已定义(__large_data_model__) /*--------------- // //*处理压缩的 ELF cinit 表。 格式如下: */ *|4字节加载 addr|4字节运行 addr| */ *|4字节加载 addr|4字节运行 addr| */ * */ /*处理步骤: */ /* 1. 读取加载和运行地址。 */ /* 2. 在加载地址读取一个字节、例如 idx。 */ /* 3. 获取到 handler_start[idx]处处理程序的指针 */ /* 4. 调用处理程序(load_addr + 1、run_addr) */ //*----------------------------------------------------------------------------------------------------- // if (__TI_Handler_Table_Base!=_TI_Handler_Table_Limit) { unsigned long const * table_ptr =(unsigned long const *)_TI_CINIT_Base; unsigned long const * table_limit =(unsigned long const *)_TI_CINIT_limit; while (table_ptr!= table_limit) { unsigned long load_addr =*表_ptr++; unsigned long run_addr =*表_ptr++; unsigned char handler_idx =__data20_read_char (load_addr++); handler_fn_t handler =__TI_Handler_Table_BAS[handler_idx]; handler (load_addr、run_addr); } } #elif defined (__TI_EABI i__)|| defined (__ARM_EABI __) /*--------------- // //*处理压缩的 ELF cinit 表。 格式如下: */ *|4字节加载 addr|4字节运行 addr| */ *|4字节加载 addr|4字节运行 addr| */ * */ /*处理步骤: */ /* 1. 读取加载和运行地址。 */ /* 2. 在加载地址读取一个字节、例如 idx。 */ /* 3. 获取到 handler_start[idx]处处理程序的指针 */ /* 4. 调用处理程序(load_addr + 1、run_addr) */ //*----------------------------------------------------------------------------------------------------- */ #if defined (__Frozen __) /*----------------- // //*对于 C7X,使用_symval ()对这些符号强制进行绝对寻址,*/ //*否则,如果我们依赖,我们最终将得到一个不正确的值 // //*独立于位置的 PC 相对寻址。 这是临时的 */ *权变措施。 有关详细信息,请参见 Jira compile-362。 */ //*----------------------------------------------------------------------------------------------------- // if (_symval (__TI_Handler_Table_Base)!=_symval (_TI_Handler_Table_Limit)) { char * const * table_ptr =(char * const *)_symval (__TI_CINIT_Base); char * const * table_limit =(char * const *)_symval (__TI_CINIT_limit); #else if (__TI_Handler_Table_Base!=__TI_Handler_Table_Limit) { char * const * table_ptr =__TI_CINIT_Base; char * const * table_limit =__TI_CINIT_limit; #endif while (table_ptr!= table_limit)//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<) 断点_1 { char const * load_addr =* table_ptr++; 特性 *run_addr =*table_ptr++; 特性 handler_idx =* load_addr++; handler_fn_t handler =__TI_Handler_Table_BAS[handler_idx]; 处理程序(load_addr、run_addr);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 断点_2 } } #else /*------------------ COFF 的*//*进程 Cinit 表。 */ //*----------------------------------------------------------------------------------------------------- * #ifdef _TMS320C6x #define align_type uintptr_t #define ALIGN ALIGN 0x7 #Elif defined (_MSP430__) #ifdef __large_data_model__ #define align_type unsigned long 其他 #define align_type unsigned #endif #define ALIGN ALIGN 0x1 其他 #define align_type uintptr_t #define ALIGING_MASK 0x3 #endif #define align_ptr (ptr)\ ((unsigned const *)(((align_type) ptr + align_mask)&~align_mask)) unsigned const * recptr =(unsigned const *)_cinit__; int length; if (recptr!=(unsigned *)-1) while ((length =* recptr++)!= 0) { #if defined (__MSP430__)&& defined (__large_data_model__) char *至=(void *)*(unsigned long const *) recptr; recptr += 2; #else char *至=(void *)*recptr++; #endif char * from =(void *) ptr ;rcpy、from =(r.py、rength;(rect from)、r.py、rength;(rect from)、r.py、rength; recptr = align_ptr (来自); } #endif }
