常驻嘉宾
- 积分
- 3373
- 威望
- 2087
- 贡献
- 678
- 兑换币
- 453
- 注册时间
- 2014-9-8
- 在线时间
- 304 小时
|
4#
楼主 |
发表于 2015-3-12 18:19:49
|
只看该作者
lucaschou 发表于 2015-3-12 10:15
程序初始化没做完,还没有跑到main程序,主要问题可能是UART有问题,你可以读写start.c 这个文件
这是我的start.c,按你说的在进入main()之前出问题了,所以打印出那些东西,可是我还是看不明白问题在哪。。
void start(void)
{
//#ifdef DEBUG
/* 关闭看门狗 */
wdog_disable();
//#endif
/* 复制中断向量表、初始化数据、以__ramfunc声明的子函数复制到RAM区 */
common_startup();
/* CPU初始化,设置频率 */
sysinit();
#if (defined(DEBUG) && defined(DEBUG_PRINT))
printf("\n\n\t\t野火kinetis核心板测试程序\n");
printf("内核频率:%dMHz\t总线频率 :%dMHz\nflex频率:%dMHz \tflash频率:%dMHz\n\n", \
core_clk_mhz, core_clk_mhz / (mcg_div.bus_div + 1), core_clk_mhz / (mcg_div.flex_div + 1), core_clk_mhz / (mcg_div.flash_div + 1));
/* Determine the last cause(s) of reset */
if (MC_SRSH & MC_SRSH_SW_MASK)
printf("Software Reset\n");
if (MC_SRSH & MC_SRSH_LOCKUP_MASK)
printf("Core Lockup Event Reset\n");
if (MC_SRSH & MC_SRSH_JTAG_MASK)
printf("JTAG Reset\n");
if (MC_SRSL & MC_SRSL_POR_MASK)
printf("Power-on Reset\n");
if (MC_SRSL & MC_SRSL_PIN_MASK)
printf("External Pin Reset\n");
if (MC_SRSL & MC_SRSL_COP_MASK)
printf("Watchdog(COP) Reset\n");
if (MC_SRSL & MC_SRSL_LOC_MASK)
printf("Loss of Clock Reset\n");
if (MC_SRSL & MC_SRSL_LVD_MASK)
printf("Low-voltage Detect Reset\n");
if (MC_SRSL & MC_SRSL_WAKEUP_MASK)
printf("LLWU Reset\n");
/* 这两个数组的地址 在 链接器Linker文件,即ICF文件 定义 */
extern uint32 __VECTOR_TABLE[];
extern uint32 __VECTOR_RAM[];
/* 检测是否需要 复制中断向量表,即可以知道是ROM启动还是RAM启动*/
printf("\n野火Kinetis开发板启动方式:");
if (__VECTOR_RAM != __VECTOR_TABLE) printf("flash启动\n");
else printf("SRAM启动\n");
/* Determine specific Kinetis device and revision */
cpu_identify();
#endif //DUBUG && DEBUG_PRINT
/* 跳进main函数 */
main();
/* 保证CPU不会停止执行 */
while(1);
}
|
|