本帖最后由 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
工程截图
运行
压缩包
|