stm8的选项字节设定_第1页
stm8的选项字节设定_第2页
stm8的选项字节设定_第3页
stm8的选项字节设定_第4页
stm8的选项字节设定_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include iostm8.hvoid main(void) FLASH_DUKR = 0xae; asm(nop); FLASH_DUKR = 0x56; asm(nop); while(!(FLASH_IAPSR & 0x08); asm(nop); FLASH_CR2 = 0x80; asm(nop); FLASH_NCR2 = 0x7f; asm(nop); *(unsigned char *)0x487e) = 0x55; asm(nop); *(unsigned char *)0x487f) = 0xaa; while(1);参考这个,相当于操作EEPROMiCreate发表于

2、 2013-3-26 21:45:46|只看该作者|返回版面heartdoll 发表于 2013-3-26 21:33请问风驰大哥,STVD里面tools-programa里可以进行IO口重映射设置。但是不知道在IAR环境下怎么操作IO口重映 .有2种方法,第一种可以用代码来设置,我封装的一个函数typedef enumAFR7_PD4_BEEP=(uint8_t)0x80,AFR6_PB4_5_I2C_SDA_SCL=(uint8_t)0x40,AFR5_PB3_2_1_0_TIM1_ETR_CH2_1_0=(uint8_t)0x20,AFR4_PD7_TIM_CH4=(uint8_t)0x

3、10,AFR3_PD0_TIM1_BKIN=(uint8_t)0x08,AFR2_PD0_CLK_CCO=(uint8_t)0x04,AFR1_PA3_TIM3_CH1_PD2_TIM2_CH3=(uint8_t)0x02,AFR0_PD3_ADC_ETR=(uint8_t)0x01Remap_Function_TypeDef;/* 名称: AlternateFunctionRemapping* 功能: 选功能重映射的设置* 形参: Function 需要重映射的功能 * 返回: 无* 说明: 如果调试需要打印数据的时候 在自定义宏的地方添加#define DEBUG_AFR即可,下载程序后只

4、有第一次执行 打印出来设置前的功能才是对的,执行完之前就被写进flash,如果不修改的话, 每次都出来的数据都是一样,所以只执行一次就行了,建议用的时候,就在调 试的时候进行执行一次就可以,以后都不需要出现了,除非再次更改。 在调用AlternateFunctionRemapping函数之前需要初始化串口函数Uart_Init 这些设置写进flash,运行一次即可,在调试的时候运行即可*/void AlternateFunctionRemapping(Remap_Function_TypeDef Function)uint8_t Function_temp;FLASH_Unlock(FLASH

5、_MEMTYPE_DATA);/*要对选项字节写操作,必须要先解锁FLASH*/while(!(FLASH-IAPSR & FLASH_IAPSR_DUL);/*等待解锁完毕*/*备选功能重映射的设置可以同时写多个不会被覆盖,因此在操作之前读取当前的状态,再根据当前的状态进行修改*/Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)8);#ifdefDEBUG_AFRprintf(rnFunction_temp:%xrn,Function_temp);#endifwhile(!(FLASH-IAPSR & FLASH_IAPSR_

6、DUL);/*等待解锁完毕*/FLASH_ProgramOptionByte(AFR_ADDRESS,Function|Function_temp);#ifdefDEBUG_AFRFunction_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)8);printf(rnFunction_temp:%xrn,Function_temp);#endifFLASH_Lock(FLASH_MEMTYPE_DATA);/*操作完要加锁*/ 只要调用我的这个函数就可以恢复初始值/* 名称: DefaultFunctionRemapping* 功能: 恢复默认

7、功能的设置* 形参: Function 需要恢复默认的功能 * 返回: 无* 说明: 如果调试需要打印数据的时候 在自定义宏的地方添加#define DEBUG_AFR即可,下载程序后只有第一次执行 打印出来设置前的功能才是对的,执行完之前就被写进flash,如果不修改的话, 每次都出来的数据都是一样,所以只执行一次就行了,建议用的时候,就在调 试的时候进行执行一次就可以,以后都不需要出现了,除非再次更改。 在调用DefaultFunctionRemapping函数之前需要初始化串口函数Uart_Init 这些设置写进flash,运行一次即可,在调试的时候运行即可*/void DefaultF

8、unctionRemapping(Default_Function_TypeDef Function)uint8_t Function_temp;FLASH_Unlock(FLASH_MEMTYPE_DATA);/*要对选项字节写操作,必须要先解锁FLASH*/while(!(FLASH-IAPSR & FLASH_IAPSR_DUL);/*等待解锁完毕*/*备选功能重映射的设置可以同时写多个不会被覆盖,因此在操作之前读取当前的状态,再根据当前的状态进行修改*/Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)8);#ifdefD

9、EBUG_AFRprintf(rnFunction_temp:%xrn,Function_temp);#endifFLASH_ProgramOptionByte(AFR_ADDRESS,Function & Function_temp);#ifdefDEBUG_AFRFunction_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)8);printf(rnFunction_temp:%xrn,Function_temp);#endifFLASH_Lock(FLASH_MEMTYPE_DATA);/*操作完要加锁*/typedef enumAFR7

10、_PD4_TIM2_CH1=(uint8_t)0x7f,AFR6_PB5_AIN5_PB4_AIN4=(uint8_t)0xbf,AFR5_PB3_2_1_0_AIN3_2_1_0=(uint8_t)0xdf,AFR4_PD7_TLI=(uint8_t)0xef,AFR3_PD0_TIM3_CH2=(uint8_t)0xf7,AFR2_PD0_TIM3_CH2=(uint8_t)0xfb,AFR1_PA3_TIM2_CH3_PD2_TIM3_CH1=(uint8_t)0xfd,AFR0_PD3_TIM2_CH2=(uint8_t)0xfeDefault_Function_TypeDef;调用这

11、个函数就可以恢复原来的设置了。第二种方式就是用ST-LINK结合IAR设置,详情请见楼主位的9和14这2份教程,很清楚的介绍查看:2803|回复:15STM8stm8的选项字节 软件里怎么配置复制链接此帖已结(0)stmsky禁止访问积分342帖子94本月在线0小时0分专家等级:结帖率:0%电梯直达1#stmsky发表于 2010-4-9 13:46:42|只看该作者|倒序浏览|返回版面回复提示:作者被禁止或删除 内容自动屏蔽分享0收藏0评分举报jgphu助理工程师积分1920帖子606本月在线1小时15分专家等级:结帖率:98%2#jgphu发表于 2010-8-10 20:51:07|只看

12、该作者|返回版面回复我也想问你这个问题评分举报版主积分45189帖子14302本月在线2小时15分专家等级:结帖率:100%3#香水城发表于 2010-8-10 21:43:23|只看该作者|返回版面回复请按照手册中介绍的这样,先使能对Option byte的写操作,然后直接写入要操作的字节即可。STM8S_Writing_Option_Byte.GIF(15.72 KB, 下载次数: 65)I do not teach, but I coach. I do not feed, but I seed.欢迎访问我的博客:评分举报pkat高级工程师积分7437帖子2376本月在线0小时0分专家等级

13、:结帖率:8%4#pkat发表于 2010-8-11 08:49:40|只看该作者|返回版面回复按手册上的操作就可以了,如果看不明白英文版的,我这里还有中文版的评分举报32446975中级技术员积分216帖子70本月在线0小时0分专家等级:结帖率:100%5#32446975发表于 2010-9-14 09:46:01|只看该作者|返回版面回复收藏STM32,STM8,51,PIC,AVR。QQ:281342118评分举报bluefeel实习生积分42帖子14本月在线0小时0分专家等级:结帖率:100%6#bluefeel发表于 2010-9-14 17:04:34|只看该作者|返回版面回复#

14、include iostm8.hvoid main(void) FLASH_DUKR = 0xae; asm(nop); FLASH_DUKR = 0x56; asm(nop); while(!(FLASH_IAPSR & 0x08); asm(nop); FLASH_CR2 = 0x80; asm(nop); FLASH_NCR2 = 0x7f; asm(nop); *(unsigned char *)0x487e) = 0x55; asm(nop); *(unsigned char *)0x487f) = 0xaa; while(1);参考这个,相当于操作EEPROM评分举报火箭球迷技术达

15、人积分9630帖子3137本月在线0小时0分专家等级:结帖率:4%7#火箭球迷发表于 2010-9-14 18:03:05|只看该作者|返回版面回复认真看一下香主给的资料,就知道怎么配置了姚明的铁杆球迷评分举报jgphu助理工程师积分1920帖子606本月在线1小时15分专家等级:结帖率:98%8#jgphu发表于 2010-9-15 10:02:40|只看该作者|返回版面回复下面的程序是产品验证过的。#include flash.h/*-*Abstract:* 读FLASH选项字节的值*Parameters:* Address选项字节地址*Returns:* 返回选项字节某个地址的值,高8位

16、为Address的值,低8位为Address+1的值*-*/unsigned int Flash_ReadOptionByte(unsigned int Address) unsigned char value_optbyte, value_optbyte_complement = 0; unsigned int res_value = 0; value_optbyte = *(near unsigned char*)Address); value_optbyte_complement = *(near unsigned char*)Address)+1); res_value = (unsi

17、gned int)value_optbyte 8; res_value |= (unsigned int)value_optbyte_complement; return(res_value);/*-*Abstract:* 擦除选项字节某个地址的值*Parameters:* Address选项字节某个地址*Returns:* None*-*/void Flash_EraseOptionByte(unsigned int Address) FLASH_CR2 |= 0x80; /对选项字节进行写操作 FLASH_NCR2 &= 0x80; *(near unsigned char*)Addres

18、s) = 0x00; *(near unsigned char*)(Address+1) = 0xff; Flash_WaitForLastOperation(); FLASH_CR2 &= 0x80; /对选项字节写禁止 FLASH_NCR2 |= 0x80;/*-*Abstract:* 写选项字节某个址址的值*Parameters:* Address选项字节某个地址Data要写的数据*Returns:* None*-*/void Flash_ProgramOptionByte(unsigned int Address, unsigned char Data) FLASH_CR2 |= 0x80; /对选项字节进行写操作 FLASH_NCR2 &= 0x80; FLASH_DUKR = 0xae; /解除写保护密钥 FLASH_DUKR = 0x56; *(near unsigned char*)Address) = Data; *(near unsigned char*)(Address+1) = Data; Flash_WaitForLastOperation(); FLASH_CR2 &= 0x80; /对选项字节写禁止 FLASH_NCR2 |= 0x80; /*-*Abstract:* 选项字节擦写等待*Paramete

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论