本帖最后由 hotpower 于 2012-9-22 12:39 编辑
首先非常感谢新唐,感谢菜农老师,特别感谢9G.
在这里还有个小插曲,板子回来后迫不及待想玩一玩,于是抽出时间建立MDK的工程,编了简单的小程序LED,本来以为会一帆风顺的,哪知道
MDK下载不了,后来以为我的工程没配置对,或者驱动没更新,于是我又重新建工程配置工程,驱动也重装,结果还是不行,试了几遍就是不
行,后来我怀疑应该不是工程的问题,于是我昨天又用ICP试了一下,发现也连接不上读不回来芯片信息,我郁闷了,我试了几十次,也不行
后来没有办法只好找9G,9G让我换了个电容,刚换完好用了连接上了,心情非常激动,以为解决了,但是悲剧又出现了,等我在连接时,又链
接不上了,没办法只能不断地尝试,一下午没干别的。也没弄好,心情极度郁闷。本来想晚上回去弄弄的但是实在没心情,回去后想放松一
下心情 看了个电影—— 杨门女将之军令如山,这个电影实在不怎么地。言归正传,今天上午正好有时间,继续弄,期间又不断地请教9G,
后来发现一个现象就是:一按复位键,电源灯就熄灭,我本人在软件上真的属于菜鸟,硬件更不用提了连鸟屎都谈不上,于是又请教9G,9G
说这个现象不正常,不可能出现这种情况。于是我硬着头皮检查电路,检查了下载板与主板的链接都正常,后来检查了一下板子电压,问题
来了,发现主板的电压2.2V左右,这就不正常了,我又一遍一遍的检查板子,发现偶尔会正常,后来发现个规律就是用手按一下下载板,主
板的电压就正常,我认为是哪里虚焊了,经过仔细检查发现,下载板与主板之间的GND链接(就是那个电阻腿链接的地方)虚焊,上面有1V的
压降,动一动板子还会断,再动动又好了,问题总算找到了,于是赶紧重焊了一下,打开ICP链接成功,特意实验了下,每次都能成功。问题
总算解决了,心情比较复杂,高兴问题解决了,反之我如果掌握一点硬件基础问题解决的也不会这么久,硬件啊真得学点啊。在这里真心的要感谢9G细心的指导。
下面上代码:main文件:/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2009 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
#include "includes.h" //包含所需的头文件
/*************************************************************************************
** Function name: main
** Descriptions: 工程模板+ IO口操作
** input parameters: 无
** output parameters: 无
** Returned value: 无
*************************************************************************************/
int main (void)
{
Set_System(); //调用系统初始化函数
while(1)
{
DrvGPIO_ClrBit(E_PORT3, 1); //LED0-ON
delay_ms(200);
DrvGPIO_SetBit(E_PORT3, 1); //LED0-OFF
DrvGPIO_ClrBit(E_PORT3, 6); //LED1-ON
delay_ms(200);
DrvGPIO_SetBit(E_PORT3, 6); //LED1-OFF
DrvGPIO_ClrBit(E_PORT5, 2); //LED2-ON
delay_ms(200);
DrvGPIO_SetBit(E_PORT5, 2); //LED2-OFF
DrvGPIO_ClrBit(E_PORT2, 6); //LED3-ON
delay_ms(200);
DrvGPIO_SetBit(E_PORT2, 6); //LED3-OFF
}
}
hw_config.c文件#include "includes.h" //包含所需的头文件
/*************************************************************************************
** Function name: Set_System
** Descriptions: 封装一些初始化模块
** input parameters: none
** output parameters: none
** Returned value: none
*************************************************************************************/
void Set_System(void)
{
RCC_Configuration(); //配置系统时钟
GPIO_Configuration(); //配置GPIO
}
/*************************************************************************************
** Function name: RCC_Configuration
** Descriptions: 系统时钟源设置
** input parameters: none
** output parameters: none
** Returned value: none
*************************************************************************************/
void RCC_Configuration(void)
{
UNLOCKREG(); // 对写保护位操作时 需要一次向0x50000 0100写入 0x59,0x16,0x88
DrvSYS_Open(XTL_CLK); // Enable high external clock and use it as system clock (HCLK)
while (DrvSYS_GetChipClockSourceStatus(XTL_CLK) != 1); //等待外部12MHZ晶振就绪
LOCKREG(); // 向“0x5000_0100”写入任何值,就可以重锁保护寄存器
}
/*************************************************************************************
** Function name: GPIO_Configuration
** Descriptions: GPIO配置
** input parameters: none
** output parameters: none
** Returned value: none
*************************************************************************************/
void GPIO_Configuration()
{
DrvGPIO_Open(E_PORT3, E_PIN1, E_IO_OUTPUT); //LED0
DrvGPIO_Open(E_PORT3, E_PIN6, E_IO_OUTPUT); //LED1
DrvGPIO_Open(E_PORT5, E_PIN2, E_IO_OUTPUT); //LED2
DrvGPIO_Open(E_PORT2, E_PIN6, E_IO_OUTPUT); //LED3
}
/*************************************************************************************
** Function name: delay_ms
** Descriptions: 1ms(晶振为12MHZ)延时子程序
** input parameters: count
** output parameters: none
** Returned value: none
*************************************************************************************/
void delay_ms(uint32_t count)
{
uint32_t i,j;
for(i=count;i>0;i--)
for(j=2395;j>0;j--);
}
hw_config.h#ifndef __HW_CONFIG_H__
#define __HW_CONFIG_H__
void Set_System(void);
void RCC_Configuration(void);
void GPIO_Configuration(void);
void delay_ms(uint32_t count);
#endif
includes.h#ifndef __INCLUDES_H__
#define __INCLUDES_H__
//库文件
#include <stdio.h>
#include "Mini51.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
//自己定义的文件
#include "variables.h"
#include "hw_config.h"
#endif
工程截图
运行
压缩包 |