TKStudio-示例工程LPC1220_GPIO_LED学习
第一步:打开工程
工程文件在【配套例程】LPC1200开发实验例程从处下载,解压后使用.
E:\Documents\program\Routine\example\LPC1220_GPIO\LPC1220_GPIO_LED\LPC1220_GPIO_LED.xmp
第二步:配置工程目标
- 在"工程"菜单下拉中选择"选择工程的目标设备"
- 在"选择目标CPU"对话框中选择"LPC1227"
第三步:目标工程配置
- 右键工程名,选择"配置目标LPC1200",或者单击快速配置按钮(手型指示的按钮),弹出"目标工程配置"对话框.
- 时钟频率为12M(12MHz内部RC振荡器可调节到1%的精度,可以选择用作系统时钟 )
- PLL允许CPU无需使用高频晶体而工作在最大CPU速率下,时钟可以由系统振荡器或内部RC振荡器提供
(在ARM数据手册中PLL叫做倍频器,顾名思义它可以把频率翻倍,如果利用它把外部12M晶振倍频4倍的话,系统就可以工作在48MHz时钟频率下。)
- 提供64引脚和48引脚的LQFP封装 )(学习板上是64引脚的封装,在做好的网关里是48引脚的封装.)
LPC1227FBD48/301 LQFP48 和 LPC1227FBD64/301 LQFP64
可以看到不同是GPIO引脚的数目48(39)引脚的同64(55)引脚的要少.Flsah同为128kb,SRAM同为8kb.
- 引脚图(64和48)
- 两个串口UART0和UART1.
- AHB(外围总线模块,Advanced Peripheral Bus)外设区的大小为 2MB,可分配多达 128个外设。APB 外设区的大小为512KB,可分配多
达 32个外设,每种类型的每一个外设空间的大小都为16KB,从而简化了每个外设的地址译码。- LPC122x含有4个独立的振荡器:系统振荡器、内部RC振荡器 (IRC)、实时时钟振荡器(只用于RTC)和看门狗振荡器。
- 0xFFFF FFFF,即为2^32,1Gb=2^10MB,1Mb=2^10Kb,1Kb=2^10b,也就是1Gb=2^30b,那么2^32就是2^2*2^30=4*1GB.
- 主要配置"输出","C/C++","调试"三个页面:
(0)查看硬件是否连接好:
单击"搜索",弹出对话框中可以看到硬件列表:
(1)硬件选择: 选择"LPC1227x301"下的"CK100",然后确定.
(2)单击"主要配置",勾选"缓冲","单步(软件单步)","断点(软件断点)","时钟模式(自动模式)","硬件复位"等.
(3)在"附加设置"中勾选"SWD",注:M0内核的芯片只支持SWD仿真调试。
(4)"程序烧写"中,选择"扇区擦除"或者"整片擦除",勾选"编程Flash""验证Flash".
(5)在"硬件自检"对话框中,单击"开始",看到"硬件初始化成功"可以单击"跳过",不会儿就看到"内部SRAM检查"结果.
**此时可以看到当前的"设置为CK100|LPC1227x301|NXP"对话框的设置信息:(从对话框的标题也可以看到设置的为LPC1227x301)
硬件选择
(1) 厂商: NXP
(2) 器件: LPC1227x301
(3) 仿真器: CK100
(4) POD类型:主要设置
(1) 缓冲代码.
(2) 缓冲数据.
(3) 小端.
(4) 使用硬件复位.
(5) 复位保持延时: 50毫秒.
(6) 复位恢复延时: 500毫秒.
(7) SYSRESETREQ复位.
(8) 自动停止.
(9) 系统时钟: 50.0000MHz.(小东说这个是倍频后的频率)
(10) Jtag时钟: 0.1000MHz.
(11) Jtag时钟模式: 自动时钟.附加设置
(1) 使用SWD仿真模式.
(2) 运行中不刷新.
(2) 不捕获复位矢量.程序烧写
(1) 擦除模式: 整片擦除.
(2) 编程Flash.
(3) 验证Flash.初始化宏
(1) ini文件为 [C:\TKStudio\DRV\TKScope\configuration\NXP\LPC122x.ini].
至此,工程配置完成.
第四步:生成工程
右键工程,选择"重新生成工程"或者单击"重新生成工程"图标,生成工程,可以看到编译的结果:
---------- Build Project: LPC1220_GPIO_LED, Target: DebugInFlash ----------
Compiling ".\CM0\core_cm0.c" ...
Compiling ".\LPC12xx\system_LPC12xx.c" ...
Assembling .\LPC12xx\startup\startup_LPC12xx.s ...
Compiling ".\USER_CODE\main.c" ...
Compiling ".\Drivers\source\debug_frmwrk.c" ...
Compiling ".\Drivers\source\lpc12xx_adc.c" ...
Compiling ".\Drivers\source\lpc12xx_comp.c" ...
Compiling ".\Drivers\source\lpc12xx_crc.c" ...
Compiling ".\Drivers\source\lpc12xx_dma.c" ...
Compiling ".\Drivers\source\lpc12xx_flash.c" ...
Compiling ".\Drivers\source\lpc12xx_gpio.c" ...
Compiling ".\Drivers\source\lpc12xx_i2c.c" ...
Compiling ".\Drivers\source\lpc12xx_iocon.c" ...
Compiling ".\Drivers\source\lpc12xx_libcfg_default.c" ...
Compiling ".\Drivers\source\lpc12xx_pmu.c" ...
Compiling ".\Drivers\source\lpc12xx_rtc.c" ...
Compiling ".\Drivers\source\lpc12xx_ssp.c" ...
Compiling ".\Drivers\source\lpc12xx_sysctrl.c" ...
Compiling ".\Drivers\source\lpc12xx_timer16.c" ...
Compiling ".\Drivers\source\lpc12xx_timer32.c" ...
Compiling ".\Drivers\source\lpc12xx_uart.c" ...
Compiling ".\Drivers\source\lpc12xx_wdt.c" ...
Linking...
Program Size: Code=1000 RO-data=224 RW-data=16 ZI-data=1120
FromELF: Creating HEX file .\DebugInFlash\LPC1200.hex...
.\DebugInFlash\LPC1200.axf - 0 Error(s),0 Warning(s).------------------------------------------------
========== 生成: 成功 1 个,失败 0 个 ==========
第五步:调试
- 在"调试"菜单的下拉列表中选择"启动/停止调试"
- 或者 快捷键"Shift+F5"
- 或者 单击"启动/停止调试"图标
然后可以看到:
CK100的lED闪烁 ---->说明程序在下载.
TinyM0的LED闪烁---->说明程序确实下载进去了.(这个说法是错误的,见后面的分析)
问题是:
怎么闪烁了一会就不闪了?
2013年3月29日 15:25:10
问题:怎么闪烁了一会就不闪了?
这个现象实际是,程序根本就没有下载进去,跑的是以前的程序.
检查发现,使用"全片擦除"后程序顺利运行.
说明买回来的芯片里面下载过程序:这个程序上电运行的结果是 LPC1227芯片的LED闪烁几次后就熄灭了.