最近在搞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下编译、实践通过。
最后,查了一下,对于计算机系的这个方法可能是常识了,但是对于搞单片机、嵌入式的大多还不知晓,个人就写出来,大家交流交流。已经知道这个方法的高手们,就一笑而过吧!
关键字:复位 软复位方法
引用地址:
430怎么复位_430软复位方法详解
推荐阅读最新更新时间:2024-11-10 22:09
msp430F5438A 的ADC 研究
由于项目中需要使用到ADC模块,那么就有必要对ADC模块进行研究了。 这是msp430F5428A datasheet首页上面对于ADC的描述: 12-Bit Analog-to-Digital Converter (ADC) – Internal Reference – Sample-and-Hold – Autoscan Feature – 14 External Channels, 2 Internal Channels ADC12_A (Link to User's Guide) The ADC12_A module supports fast 12-bit analog-to-digital conversio
[单片机]
02:按键的使用【MSP430F5529】
一:原理图 按键S1 对应IO口:P2.1 按键S2 对应IO口:P1.1 使用时,应该使能P2.1/P1.1的电阻接高电平。未按下按键时,端口电压为高电平。按下按键时,端口为低电平。 二:初始化 S1初始化,对应IO口:P2.1 /*S1~P2.1,按下按键端口变为低电平*/ P2DIR &= ~BIT1; //初始化按键S1的IO口P2.1,设置为输入 P2REN |= BIT1; //使能P2.1的电阻 P2OUT |= BIT1; //选择上拉电阻 S2初始化,对应IO口:P1.1 /*S2~P1.1*/ P1DIR &= ~BIT1; //初始化按键
[单片机]
基于MSP430 单片机的便携式气象仪设计
0 引言 温度.湿度.气压.风速.风向等气象参数的测量在日常生活.农业.渔业.工业.林业.航海等领域中起着十分重要的作用,很多地区气象参数的测量大多依靠当地天气预报,可是,天气预报地域范围较广,无法精确到小区域的气候测量.而搭建气象台成本较高,性价比很低,因此设计一种小型化,便携式的综合气象测量仪就显得十分必要.针对上述问题本文设计了一种低功耗便携式气象仪,该气象检测系统可以有效地测量小区域的温度.湿度.气压.风速.风向等气象参数,精度可达到普通气象测量要求,还有实时显示.实时存储.回溯查询的功能,具有低功耗.小型化.便携式.低成本的特点,适应于各种小区域的气象测量,具有一定的实用价值. 1 系统设计和工作原理
[单片机]
基于MSP430单片机的天线方向图自动测试系统
天线方向图是天线的重要指标,天线测试的目的是检验天线的辐射特性。早期的天线测试主要依靠手工,误差大、效率低。随着计算机应用技术的发展,出现了用于天线测试的自动控制系统,有效的提高了测试精度和工作效率。然而以往开发的系统主要应用于商业领域,成本高、研发周期长。为了针对实验研究、教学实践和小型天线工程测试对天线测试系统的实际需求,提出并设计了一种基于MSP430的天线方向图自动测试系统,该系统能够完成对天线的准确测试。 1 方向图自动测试系统理论和方案设计 根据天线互易原理,采用旋转天线法。固定的辐射天线作为发射天线发射电磁波,转动被测天线进行接收,测出被测范围内不同角度处的信号电平,便可得到被测天线的方向图。在实际测量中不需要
[单片机]
MSP430单片机输入与输出
MSP430单片机的输入输出线绝大多数是服用的,除了个别的端口外,基本上是8为为一组,不同的型号的MSP430的端口有所不同,就msp430F5438而言,一共有11个I/O端口,其中除了第十一P11的宽度是3位以外,其他的端口全是8为宽度,为了方便使用,分别命名为PA,PB,PC, ,分别对应P1,P2P3 值得注意的是MSP430F5438单片机的P1和P2端口还具有申请中断的功能,而其他的端口则无此功能 每个端口都有控制开关,分别可以控制端口的方向,引脚的功能,每个端口都有自己的输入输出寄存器,MSP430F5438海域中断管理寄存器,他们分别决定端口的中断使能,中断有效边沿,和中断标志位 示例代码: 驱动实
[单片机]
msp430 FLASH 字节读写程序
/***** 430 FLASH 字节读写程序 *************************/ 430的数据RAM 与FLASH的读写 #define FLASH_ADDRESS 0x1000 //定义FLASH信息区地址B段 void flash_erase(unsigned char*); void read_flash(unsigned char *pc_byte, unsigned char *array,unsigned char amount); void write_flash(unsigned char *pc_byte,unsigned char *array,unsign
[单片机]
MSP430 LaunchPad IO外部中断
#include msp430g2231.h int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x01;//设置P1.0口为输出 P1IE |= 0x08;//使能P1.3中断 P1IES |= 0x08;//P1.3口下降沿触发中断 P1IFG &= ~0x08;//中断标志位清零 _EINT();//开总中断 //_BIS_SR(LPM4_bits + GIE); while(1) { } } /*中断服务程序*/ #pragma vector =
[单片机]
51单片机复位电路原理是什么?为什么为复位?
51单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。 开机的时候为什么为复位 在电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在
[单片机]