LPC1768 IAP升级方法 实例
测试说明:
本实验通过串口0对开发板进行IAP升级,本工程为引导程序,将开发板上的USB转串口连接到电脑
插上3.2寸彩屏模块,下载程序到开发板,彩屏显示按键功能:
INTO键:擦除应用程序
方向键 ok:进行IAP升级,等待串口接收应用程序
方向键 down:运行应用程序
方向键 up:显示菜单
当按下ok键等待串口接收应用程序时,电脑通过超级终端发送预先编译好的应用程序(BIN)格式
以1K Xmodem模式进行发送给开发板,开发板接收完成后显示 Updata Complete,按方向键down
开始执行应用程序
单片机源程序如下:
/*******************************************************************************
* Company: Wang Electronic Technology Co., Ltd.
******************************************************************************
* 文件名称:main.c
* 功能说明:IAP引导程序
* 版 本:V1.1
* 作 者:jeansonm
********************************************************************************
* 文件名称:
* 功能说明:
* 版 本:
* 更新作者:
* 日 期:
* 更新原因:
********************************************************************************/
#include "LPC17xx.h"
#include "lcd_bsp.h"
#include "xmodem1k.h"
#include "iap.h"
#include #define IMG_START_SECTOR 0x00010000 /* Sector 16 应用程序地址 */ #define IMG_END_SECTOR 0x00037FFF /* Sector 20 */ /* Function Prototype */ static uint32_t load_image(uint8_t *data, uint16_t length); /* Character array workspace for GLCD print functions */ #define MAX_STRING_SIZE 50 static uint8_t string[3][MAX_STRING_SIZE]; static uint32_t received_data = 0; /* State-machine variable to control application functionality */ enum state_machine { READY = 0, MENU, ERASE_FLASH, FLASH_IMG, SHOW }; enum state_machine cmd; /********************************************************************************************************* ** Function name: JMP_Boot ** Descriptions: 跳转到应用程序 ** input parameters: address 应用程序地址 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ __asm void JMP_Boot( uint32_t address ){ LDR SP, [R0] ;Load new stack pointer address LDR PC, [R0, #4] ;Load new program counter address } /********************************************************************************************************* ** Function name: Boot ** Descriptions: 跳转到应用程序 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void Boot( void ) { SCB->VTOR = IMG_START_SECTOR & 0x1FFFFF80; //修改中断向量表 JMP_Boot(IMG_START_SECTOR); } /********************************************************************************************************* ** Function name: Screen_Fresh ** Descriptions: 刷新显示 ** input parameters: p 显示信息 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void Screen_Fresh(char *p) { LCD_Clear(Black); LCD_DisplayString(0, 0, "Application MENU"); LCD_DisplayString(0, 16, "Press "INT0" to erase image"); LCD_DisplayString(0, 16*2, "Press "UP" to print menu"); LCD_DisplayString(0, 16*3, "Press "CENTER" to transfer image"); LCD_DisplayString(0, 16*4, "Press "DOWN" to display image"); LCD_DisplayString(0, 16*5, string[0]); LCD_DisplayString(0, 16*6, string[1]); LCD_DisplayString(0, 16*7, string[2]); LCD_DisplayString(0, 16*9, p); } int main(void) { uint32_t ints[4]; SystemClockUpdate(); LCD_BSP_Init(); //LCD初始化 LCD_Clear(Black); LCD_SetBackColor(Black); LCD_SetTextColor(White); cmd = MENU; while(1) { switch(cmd) { case READY: if (!(LPC_GPIO2->FIOPIN & (1<<10)))/* INT0 键 */ { Screen_Fresh("Erasing Images..."); cmd = ERASE_FLASH; } else if(!(LPC_GPIO1->FIOPIN & (1<<29)))/* 方向键 up 键 */ { cmd = MENU; } else if(!(LPC_GPIO1->FIOPIN & (1<<25)))/* 方向键 ok 键 */ { Screen_Fresh("Waiting for XMODEM Xfer..."); cmd = FLASH_IMG; } else if(!(LPC_GPIO1->FIOPIN & (1<<26)))/* 方向键 down 键 */ { Screen_Fresh("Execute program"); cmd = SHOW; } break; case MENU: /* 显示引导程序版本 */ if(u32IAP_ReadBootVersion (&ints[0], &ints[1]) == IAP_STA_CMD_SUCCESS) { snprintf((char *)string[0], MAX_STRING_SIZE, "Boot Code version %d.%d", ints[0], ints[1]);
上一篇:S32K144_Uart串口源程序
下一篇:LPC1768 IAP升级方法
推荐阅读
史海拾趣
1999年,FASTRAX在芬兰赫尔辛基成立,专注于为全球设备生产商和设计商提供高性能的GPS接收模块。公司凭借对GNSS技术的深入理解,迅速在市场中崭露头角。其首创的带天线GPS接收模块以其高效、稳定的性能,赢得了客户的广泛赞誉。
成立于2004年的珠海艾派克微电子有限公司,在创业初期便致力于集成电路芯片设计领域的探索。公司凭借着对CPU设计技术、多核SoC专用芯片设计技术、安全芯片设计技术等核心技术的深入研究,逐步在行业内积累了良好的口碑。这一时期,艾派克坚持以市场需求为导向,不断优化产品性能,为公司的长远发展奠定了坚实的基础。
2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。
这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。
BHFUSE佰宏实业成立于2013年,创立之初,公司便确立了专注于大电流、高电压、低内阻的PPTC自恢复保险丝的研发与生产。面对激烈的市场竞争,佰宏团队凭借对技术的深刻理解和对市场的敏锐洞察,逐步赢得了客户的认可。在创立初期,佰宏便与多家知名代工厂建立了合作关系,为其提供优质的保护器件,逐步在行业中树立了良好的口碑。
并购完成后,GainSpan的技术与Telit的物联网平台实现了深度融合。Telit利用GainSpan的低功耗WiFi模组技术,推出了更加高效、节能的物联网解决方案。这些方案不仅降低了物联网设备的能耗,还延长了设备的使用寿命,提高了整体系统的稳定性和可靠性。同时,GainSpan的技术也为Telit的物联网平台带来了更多创新应用的可能性。
随着环保意识的日益增强,ETC2公司也积极响应国家环保政策,致力于推动ETC技术的绿色环保应用。他们研发了低能耗、低排放的ETC设备,并推广使用电子发票等环保支付方式。这些举措不仅减少了能源消耗和环境污染,也为ETC2公司树立了绿色环保的企业形象。
这是我做的“短距离GFSK无线调制器” 但貌似电路连线上有点问题 请高手帮忙看看 图我放附件里 谢谢 图太大了只能截主要部分的 “1602部分”“51单片机部分”“ADF7012部分” 主要就是 ...… 查看全部问答∨ |
|
PB5.0,编译出现错误:error C2220: warning treated as error - no object file generated 平台:PB5.0 小弟做一个内核时候,在build阶段出现一个错误,具体如下: BUILD: [00:0000000029:PROGC ] Compiling \\WINCE500\\PLATFORM\\855gme\\Src\\Kernel\\Libs\\Kitl\\ directory. BUILD: [01:000 ...… 查看全部问答∨ |
中华嵌入式人才库简介 中华嵌入式人才库隶属于中国嵌入式系统产业联盟,是面向中国嵌入式行业的专业人力资源服务网站,为IT企业提供嵌入式人才,为个人提供求职应聘机会,为业内资深人员提供技术交流的平台以及专业服务 ...… 查看全部问答∨ |
请问DNS的解析速率正常范围是多少啊?是不是太高或太低都不好啊? 提这个问题是因为需要监控DNS解析速率这个指标,并设定其上下限门限值。所以请有经验的兄弟们给个解析速率的上下限经验值哈。谢谢!… 查看全部问答∨ |
|
请问一下STM32F10x哪些I/O是CMOS,哪些是TTL? 我从数据手册“STM32F101x8xB_V10.pdf”中看到的输入输出有TTL电平和CMOS电平的,见图片。请问一下STM32F10x哪些I/O是CMOS,哪些是TTL?… 查看全部问答∨ |