一种430软复位方法

发布者:sjp5035022最新更新时间:2020-03-14 来源: eefocus关键字:软复位方法  程序烧写 手机看文章 扫描二维码
随时随地手机看文章

最近在搞430的FLASH的自定义法(利用串口)程序烧写,烧写完成后断电复位,reset按键就可以运行新的程序。但是和学长交流了一下,这种方法不够好,希望有一种软复位的方式。于是百度了一下,都是些对看门狗进行写入特殊值使得430的cpu复位。反正个人是没有采用。


因为在搞程序的烧写下载,所以看了一下430的BSL。看到里面有一段话,关于从C代码中启动BSL的方法。如下:


3.7.1 从一个外部应用中启动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下编译、实践通过。


最后,查了一下,对于计算机系的这个方法可能是常识了,但是对于搞单片机、嵌入式的大多还不知晓,个人就写出来,大家交流交流。已经知道这个方法的高手们,就一笑而过吧!

关键字:软复位方法  程序烧写 引用地址:一种430软复位方法

上一篇:MSP430的软硬件C延时程序设计
下一篇:430的复位及复位电路

推荐阅读最新更新时间:2024-11-22 09:01

MSP430F5438 I2C学习笔记——AT24C02
0.前言 对于大多数单片机来说,I2C成了一个老大难问题。从51时代开始,软件模拟I2C成了主流,甚至到ARMCortex M3大行其道的今天,软件模拟I2C依然是使用最广的方法。虽然软件模拟可以解决所有的问题,但是总感觉没有充分发挥MCU内部的硬件资源。查阅了所有关于MSP430F5系列的图书,没有关于硬件I2C的应用代码,自己通过调试摸索,把经验总结之后和大家分享,希望大家喜欢。同时,I2C的使用可以分为等待法和中断法,从理解的角度来说等待法思路清晰易于上手,从功耗的角度出发,中断法可以灵活的进入低功耗模式,但是不易理解。本文先从等待法入手。 MSP430F5系列的硬件I2C使用大致会有以下问题: 【I2C地址设定】一
[单片机]
MSP<font color='red'>430</font>F5438 I2C学习笔记——AT24C02
学习MSP430G2553总结
个人感觉TI做的这块430就是一坨屎,内部时钟根本不稳,而且连datesheet都没有,但作为比赛指定的东西我们还是学了,这个连51都不如的16位单片机费了我四天时间把内部的模块给调了一遍,但是我调IIC时一直调不出来连时钟都没有,估计是做这块垃圾是连这个模块都没有吧,而且还写的那么复杂,连份像样的技术文档都没有,看的是别的技术文档,真是蛋疼无比,好了牢骚就发这么多,下面开始讲讲这块片子。 首先介绍下MSP430G2553的时钟,这块芯片的时钟源是四个,时钟线是4个;时钟源我们就不说了,一般都是默认的选择内部的DCO作为时钟源,然后通过一系列的嫁接到MCLK SMCLK上,至于为什么这块芯片上不用锁相环的问题我深表不解,这个解
[单片机]
MSP430与I2C总线接口技术的研究
引言 MSP430单片机自从2000年问世以来,就以其功能完善、超低功耗、开发简便的特点得到了许多设计人员的青睐。MSP430与传统的51单片机在结构上有很大的区别。其中之一就是:在MSP430的外围接口电路中,没有提供像51那样控制外设读、写、地址锁存信号的硬件电路。与这种接口电路相适应,MSP430更倾向使用I2C总线以及ISP等基于串行接口的外围器件。另一方面,随着I2C技术的发展和成熟,其硬件结构简单、高速传输、器件丰富等特点使该类器件的应用越来越广泛。因此研究新型单片机MSP430与I2C总线接口技术有着重要的意义。本文针对这一问题进行研究,分析研究了MSP430与I2C总线接口的原理和方法,提出了高效的接
[应用]
MSP430在单电池供电的LED照明中的应用电路
  便携式设备常采用单节的碱性电池供电,亦称作单电池供电。而LED 是发光二极管的简称,由于其省电、寿命长和开关速度快等特点,正被广泛应用到照明领域;而部分照明设备如自行车运动爱好者的车灯、头灯以及特殊要求手电筒等又要求能够便携以便于移动,所以对系统的功耗即电池的寿命有着严格的要求。本文针对低功耗、便携以及较低系统成本LED 照明的要求,基于超低功耗单片机MSP430 以及升压转换器TPS61200,设计并完成单电池供电的LED 照明应用。    LED 驱动电路模块   对于单节电池供电的LED 照明设备,首先要选用升压芯片为LED 提供电源以保证LED 的正常导通。这里我们选用了TPS61200,其工作电压为0.3~5.5V
[电源管理]
MSP430单片机GPIO编程入门教程
在本教程中,我们将一起学习MSP430单片机GPIO的编程方法。本文也适用于Launchpad开发板上使用的MSP430x2xx器件,如MSP430G2553、MSP430G2231等。MSP430单片机上的大多数引脚被分组为最多8个端口, P1到P8。每个端口都是8位宽,并有8个相关的I / O引脚。这些引脚直接映射到相应的端口寄存器,因此可以独立操作I / O引脚。只有端口P1和P2中的引脚支持中断。 此外,每个I / O引脚还具有可配置的上拉和下拉电阻。 每个端口都有一组相关的寄存器,用来操作各个引脚。 位映射和端口分组如下所示: 注意:在编程指南/数据手册中使用的引脚的命令约定是’Px.y’,其中’x’对应的是端口号(
[单片机]
MSP<font color='red'>430</font>单片机GPIO编程入门教程
msp430程序丢失问题分析及解决方法
   TI 的MSP430系列是一款功耗低、市面流行的SOC结构的CPU,适合做智能仪表。IAR对其支持得很好,下面就以IAR调试为例来说说MSP430调试过程中一些问题。   1、接上仿真器,发现不能下载,IAR提示找不到目标。   (1)并口驱动能力不足,在电脑的BIOS界面下设置成ECP或者ECP+EPP模式;(2)JTAG线太长,一般超过20CM不推荐,而且这个线最好不要交叉缠绕,会影响实时在线调试;   (3)负载太大,一般功耗相对比较大,电流超过20MA以上的板子,建议用外接电源,光靠并口的电源,MCU的电压被拉低到不能写FLASH。   2、程序下载到一半,突然告警并报错,说某某地址写不进去。   (
[单片机]
msp<font color='red'>430</font><font color='red'>程序</font>丢失问题分析及解决<font color='red'>方法</font>
MSP430F149让LED灯闪烁
程序: //让LED灯闪烁 #include msp430x14x.h void main(void) { P6DIR |= BIT2;P6OUT |= BIT2; //关掉电平转换(不必纠结) WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P3DIR |= BIT3; // Set P3.4 to output direction for (;;) //一直循环,一直执行,一直取反 { volatile unsigned int i; //volatil
[单片机]
MSP430学习小结1-看门狗的使用总结
看门狗定时器用来防止程序因供电电源、空间电磁干扰或其它原因引起的强烈干扰噪声而跑飞的事故。在很多单片机中都内置了看门狗,看门狗本身是一个定时器,当定时器溢出时即进行系统复位,因此需要在程序中对看门狗定时器进行清零,即常说的喂狗。 由于我用过AVR的单片机,和AVR的相比,MSP430的看门狗要灵活的多,首先默认看门狗是开着的,因此如果不使用看门狗的话要关闭,指令如下: WDTCTL = WDTPW + WDTHOLD 如果打开看门狗则需要在程序中清零,指令如下: WDTCTL=WDTPW+WDTCNTCL 这只是基本的应用,430的看门狗要稍微复杂一些,首先从IAR的头文件中看看定义了几种工作状态: /* WDT-interva
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved