usb自动更新程序IAP(in application programming)DFU(develepment firemeware upgrate).整个芯片有512k的片内flash,用户程序下载在里面运行,flash的地址是0x8000000,大小为0x80000,usb自动更新程序首先下载0x8000000——0x80002FFF,总大小为12K,用户程序下载到0x80003000,大小为0x7D000(500K),usb自动更新代码为如下,如果按键按下,就进入DFU模式,否则就启动用户代码。
用户程序除了在void NVIC_Configuration(void)
{
/* Set the Vector Table base location at 0x3000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x3000);
}
里面修改,还要修改编译的地址,修改为0x80003000,大小为0x7d000,
iap程序编译地址为0x80000000,结束为0x80002fff,大小为0x3000,这样分别烧写用户程序和usb iap程序,启动即可。需要pc主机安装st公司的dfuse_demo_v3.0,其中会有dfu的驱动程序,插上usb后手动安装驱动程序C:\Program Files\STMicroelectronics\Software\DfuSe\Driver\x86\文件就好了运行DFU filemanager将编译生成的.hex文件转换成.dfu,然后运行DFUse demonstration upgrade生成的.dfu文件即可.
int main(void)
{
DFU_Button_Config();//配置usb自动升级程序的按键标识
/* Check if the Key push-button on STM3210x-EVAL Board is pressed */
if (DFU_Button_Read() != 0x00)
{ /* Test if user code is programmed starting from address 0x8003000 */
if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
{ /* Jump to user application */
JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) ApplicationAddress);
Jump_To_Application();
}
} /* Otherwise enters DFU mode to allow user to program his application */
/* Enter DFU mode */
DeviceState = STATE_dfuERROR;
DeviceStatus[0] = STATUS_ERRFIRMWARE;
DeviceStatus[4] = DeviceState;
Set_System();
Set_USBClock();
USB_Init();
/* Main loop */
while (1)
{
}
}
上一篇:ARM中的RO段、RW段和ZI段的区别
下一篇:STM32(Cortex-M3)中优先级的概念
推荐阅读
史海拾趣
近年来,DYMO公司越来越注重环保和可持续发展。公司采用环保材料制造产品,并推广循环使用和回收计划。此外,DYMO公司还积极参与各种环保活动,致力于减少生产过程中的碳排放和废弃物排放。这些举措不仅提高了DYMO公司的社会形象,也为其未来的发展奠定了更加坚实的基础。
在激烈的市场竞争中,Dean Technology公司始终保持对技术创新的追求。他们不断投入研发资金,引进先进技术和设备,提升产品的技术含量和附加值。同时,公司还注重与高校、科研机构的合作,共同开展科研项目,推动行业技术的进步。这些努力使得Dean Technology的高压二极管产品始终保持在行业的领先地位。
在1995年,台湾人章启侨在美国加州创立了AFOP。当时的电子行业正处于光纤通信技术的蓬勃发展时期,章启侨凭借对市场的敏锐洞察,将公司的业务聚焦于光纤通信主被动元件的设计与制造。在创立初期,AFOP面临着技术、资金和市场等多方面的挑战,但章启侨带领团队不断攻克难关,逐渐在市场中站稳脚跟。
随着全球经济的不断发展,Desoutter公司开始实施国际化战略,积极开拓国际市场。公司通过与全球知名企业的合作,如大众集团、捷豹路虎集团等,成功进入了欧洲、北美等地区的市场。同时,Desoutter公司还在全球范围内建立了多个生产基地和研发中心,以更好地满足不同地区客户的需求。
Desoutter公司成立于1914年,由Desoutter兄弟创立。起初,公司专注于气动工具的研发和生产,很快就以其高质量和可靠性在市场中获得了认可。随着工业革命的深入,气动工具的需求日益增长,Desoutter公司凭借技术优势和市场洞察,逐步扩大了生产规模,奠定了在气动工具领域的领先地位。
为了在全球市场上保持领先地位,正泰建立了北美、欧洲、亚太等三大全球研发中心,并与清华大学、上海交大等国内外知名院校、机构展开合作,探索“产学研”融合模式。通过整合全球创新资源,正泰在智能电网、新能源电车充电设施等前沿领域取得了一系列创新进展。这种全球研发体系的建立,不仅提升了公司的研发能力,也增强了公司的市场竞争力。
在判断放大电路的反馈组态时,很难判断是电压还是电流反馈,虽然有什么负载短路法,或根据放大的输出与反馈的输入是否在同一个点来判断,但是,有时还是回判断错误,请问有什么更好的判断方法吗?… 查看全部问答∨ |
PIC烧写调试器ICD2,18F4550+16F877A+USB取电,配进口USB线, 淘宝地址http://auction1.taobao.com/auction/item_detail-0db2-f856961a8480fb64ad9297cf42c260f3.jhtml… 查看全部问答∨ |
本人做了个上电自检的程序,是基于vxworks6.5的, 我把自检函数直接添加在usrconfig.c文件中,usrRoot()函数里,bootrom启动过程中完成了上电自检, 且检测所有硬件(主要是内存和flash)都正常,可是生成操作系统以后(用workbench生成的操作系 ...… 查看全部问答∨ |
|
楼主: 你好! 买了一个STR912的开发板,发现912的性能还不错,听说又有一个加强版的要出来了,很想把UCOS移上去,请发一个移植模板.谢谢!… 查看全部问答∨ |
u8 buf1[100]; //都初始化0 u8 buf2[100]; //都初始化0 u16 rev; //中断接收计数 串口发送方式: DMA 串口接收方式: 中断 DMA_InitStructure.DMA_PeripheralBaseAddr = USART1_DR_Base; DMA_InitStructure.DMA_MemoryBaseAdd ...… 查看全部问答∨ |
我想给P3.1定义为data,然后编程时写data=1;P3.1就输出1,我该如何定义? 我写了 #define P3.1 data 不好使啊???… 查看全部问答∨ |
我用的MSP430F235编的AD转换程序,得到的转换结果很不稳定。希望各位大虾帮帮忙。 程序如下,主要用来调试新焊的板子上430的ad转换功能。 #include\"MSP430x23x.h\"int AD_TEMP = 0;/************************A/D转换初始化*********************/void Init_Adc(void){ P6SEL |= 0x08; ...… 查看全部问答∨ |