本帖最后由 xiepengchenghn 于 2010-5-26 18:18 编辑
本人新入手stm32f107,之前也未有过arm开发经验。遇到几个问题,实在找不到原因,请坛里的兄弟指点一二。
首先说一下我的开发工具,金牛开发板+mdk4.11+Jlink。我使用ST固件库3.2.0,写了一个GPIO的跑马灯程序,编译通过,但是用Jlink调试的时候,出现了cpu halted以及MMU的错误,换成其他程序依然可以正常运行,调试和下载。现将程序代码贴在下面
#include "stm32f10x.h"
//#include "stm32f10x_conf.h"
GPIO_InitTypeDef GPIO_InitStructure;
void GPIO_Delay()
{
__IO uint32_t i;
for(i=0xAFFFF;i>0;i--)
{
// for(j=10;j>0;j--);
}
}
int main(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
// RCC_DeInit();
GPIO_StructInit(&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);
// SysTick_Config(SystemFrequency / 1000);
while(1)
{
GPIO_SetBits(GPIOD,GPIO_Pin_2);
GPIO_Delay();
// GPIO_ResetBits(GPIOD,GPIO_Pin_2);
GPIO_SetBits(GPIOD,GPIO_Pin_3 | GPIO_Pin_4);
GPIO_ResetBits(GPIOD,GPIO_Pin_3 | GPIO_Pin_4);
GPIO_Delay();
// GPIO_SetBits(GPIOD,GPIO_Pin_4);
// GPIO_Delay();
GPIO_SetBits(GPIOD,GPIO_Pin_7);
GPIO_ResetBits(GPIOD,GPIO_Pin_4 | GPIO_Pin_3);
GPIO_Delay();
GPIO_ResetBits(GPIOD,GPIO_Pin_7);
GPIO_Delay();
}
}
请知情者告知原因,指点下我这个门外汉,谢谢。
另外金牛自带的GPIO例程,单步运行还OK,但是一全速运行就出现了硬件fault。
请问下该如何查找出现硬件fault的原因呢?按照Cortex M3权威指南中所说,是否用汇编语言来进行调试呢? |