最近在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运行新的程序。但是和学长交流了一下,这种方法不够好,希望有一种软复位的方式。于是百度了一下,都是些对看门狗进行写入特殊值使得430的cpu复位。反正个人是没有采用。
因为在搞程序的烧写下载,所以看了一下430的BSL。看到里面有一段话,关于从C代码中启动BSL的方法。如下:
从一个外部应用中启动BSL
将程序计数器设定到内存为位置0x1000 来启动BSL。堆栈一直被复位,而RAM 被清空。应该注意的是,GIE 位未被禁用,所以如果不需要中断的话,这一步应该通过调用应用来完成,并且如果它们被使用的话,这一步应该从“返回BSL”返回。
由于堆栈被复位,位置0x1000 也可以被作为一个C 功能进行调用,示例代码如下:
((void (*)())0x1000)()
于是想到,既然可以从C里面跳转到0x1000,那么也可以跳转到其他地址,比如复位地址了。
以6638为例。430的复位中断矢量地址是0xFFFE,里面存储了将要跳转的物理地址。6638的代码区起始地址是0x8000,正常复位是先进入复位中断,然后PC指针导入地址0x8000,然后从0x8000开始执行代码。那么软复位则是,执行((void (*)())0x8000)(),直接PC指针被导入0x8000的地址,而这个地址正好是6638的代码区起始地址,于是软复位了。个人分析一下这个指令,如有错误敬请大神们指正。
从代码上讲,(void (*)()是一个指向空函数的指针,((void (*)())0x8000)()是将0x8000强制转换为函数指针后进行函数调用,于是0x8000便被送入了PC指针。
对于其他的430单片,去查其数据手册FLASH段,弄清其代码区的开始地址,也可以用这个方法软复位了。
实测,IAR,CCS下编译、实践通过。
关键字:msp430 单片机 程序升级
引用地址:
msp430单片机程序升级的方法有哪些
推荐阅读最新更新时间:2024-11-03 12:32
单片机系统的扩展包括哪些方面的内容?
单片机系统的扩展,包括c和接口扩展两大部分内容。 存储器的扩展是指EPROM、EEPROM和RAM的扩展;接口扩展是指8255、8155、8279以及其他功能器件的扩展。
[单片机]
51单片机实现4个按键控制8个LED灯四种状态
电路图 元件清单 程序(C语言) #include reg51.h sbit p3_0=P3^0; sbit p3_1=P3^1; sbit p3_2=P3^2; sbit p3_3=P3^3; void delay(unsigned char i); void main() { unsigned char ledctr; P3=0xff; while(1) { ledctr=P3; switch(ledctr) { case 0xff:P1=0x00;break; case 0xfe:P1=0xff;break; case 0xfd:P1=0x55;delay(
[单片机]
远程心电监测系统的研究与设计
作为心脏病临床检查的常规方法,心电图具有无创伤、操作简单、出图快等特点,对于各种心律失常和传导障碍的诊断具有决定性作用。随着计算机网络、通信等相关技术的迅速发展,心电图检测技术也逐渐应用到远程医疗领域中来,使得医院为心脏病患者的远程保健服务成为可能。截至目前,国内已经研发出了通过固定电话传输心电信号的心电传输系统,由于干扰大、成本较高,并未应用于临床。为此,本文将研究设计一种低成本、低功耗、携带方便的无线远程心电监测系统,从而为心脏病患者提供方便的远程心电监测服务功能。 1 系统概述 远程心电监测系统由心电检测终端、无线通信网络、医院监护中心组成,结构框图如图1所示。 心电检测终端用来采集和检测患者的心电
[单片机]
基于AVR单片机的DDS信号源电路图
电路原理如下图所示,可分为四个部分:以IC1为核心的DDS;以IC2为核心的键盘、显示及控制电路;以IC3为核心的AGC电路;以IC4为核心的检波电路。 图 基于AVR单片机的DDS信号源电路图
[单片机]
MCU——TC04B触摸按键芯片驱动
1. 操作说明 1.1 时序(Data&Clock) TC04B 配备有一个串行接口,允许与外部设备进行简单的通讯。当触摸芯片侦测到触摸键被按,会在Data 脚输出低电位,可唤醒主机,主机在接收到低电位后,由 Clock 脚输出时钟信号,并从 Data 脚回读按键值。 当在 Clock 脚输入低电位时,触摸芯片准备数据,Clock 脚送出高电位后,主机从Data 线读取数据。每次读取数据以 8 个时钟信号一组。也可用轮询的方式直接读取键值,不必等待 Start 位。当数据读取错误时,需等 6ms 左右 , 才能再重新读取一次。 1.2 键值 当 Clock 引脚接收到时钟信号,触摸芯片将会产生一个 8 位的数据
[单片机]
μC/OS-II在Cortex-M3系列单片机上的移植
引言
μC/OSII是一种简单高效、源代码公开的实时嵌入式操作系统,具有良好的扩展性和可移植性,被广泛应用到各种嵌入式处理器上;对于提高产品的质量,减少开发周期和降低成本有着重要的意义。本文以μC/OSII为移植对象,以ARM CortexM3内核微处理器为移植目标来讨论其移植过程及应用。
1 μC/OSII及ARM CortexM3简介
实时操作系统μC/OSII是一个基于优先级的抢占式实时内核,程序可读性强,移植性好,代码固定,可裁剪,非常灵活。至今,从8位到64位,μC/OSII已在超过40种不同架构的微处理器上运行。μC/OSII的主要特点有:是优先级可剥夺的实时多任务操作系统;可处理和调度56个
[嵌入式]
恩智浦推出双电源电压ARM Cortex-M0微控制器
恩智浦半导体NXP Semiconductors N.V.近日宣布推出LPC1100LV系列,这是全球首款支持1.65V至1.95V VDD和1.65V至3.6V VIO双电源电压的ARM® Cortex™-M0微控制器。LPC1100LV系列采用2mm x 2mm微型封装,性能达到50 MIPS,功耗比同类3.3V VDD器件低三倍以上。LPC1100LV平台专门针对电池供电型终端应用而设计,包括手机、平板电脑、超级本(Ultrabooks™)以及有源电缆、相机和便携式医疗电子设备的移动配件。 恩智浦半导体微控制器业务部市场总监Jan Jaap Bezemer表示:“通常,在单个微型封装中目前还无法实现高性能双电源电压的产品。L
[单片机]
数模转换器DAC7724与AT89S51单片机的接口及程序设计
摘要:介绍了一种性能优良的低功耗4通道12位并行D/A转换器DAC7724的功能特点和工作过程,给出了DAC7724与51单片机的接口电路及其汇编语言应用程序,最后提出了一种利用DAC输出大范围电压(-20V~+20V)的实现方法。 关键词:数/模转换;单片机;汇编语言;DAC7724 0 引言 在微计算机电机控制的机电设备中,常常需要把数字信号变成模拟信号,以驱动机电设备的运行。在这个过程中,D/A转换是一个十分重要的环节,同时也是微计算机电机控制系统重要的组成部分。 1 DAC7724的主要特点 DAC7724是TI公司生产的12位并行输入4通道D/A转换器,该转换器具有以下特征: ◇±15V以内的双电源工作;
[单片机]