stm8的选项字节设定剖析Word格式.docx
- 文档编号:16367083
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:13
- 大小:71.78KB
stm8的选项字节设定剖析Word格式.docx
《stm8的选项字节设定剖析Word格式.docx》由会员分享,可在线阅读,更多相关《stm8的选项字节设定剖析Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
heartdoll发表于2013-3-2621:
33
请问风驰大哥,STVD里面tools->
programa里可以进行IO口重映射设置。
但是不知道在IAR环境下怎么操作IO口重映...
有2种方法,第一种可以用代码来设置,我封装的一个函数
typedefenum{
AFR7_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)0x10,
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)0x01
}Remap_Function_TypeDef;
/*******************************************************************************
*名称:
AlternateFunctionRemapping
*功能:
选功能重映射的设置
*形参:
Function需要重映射的功能
*返回:
无
*说明:
如果调试需要打印数据的时候
在自定义宏的地方添加#defineDEBUG_AFR即可,下载程序后只有第一次执行
打印出来设置前的功能才是对的,执行完之前就被写进flash,如果不修改的话,
每次都出来的数据都是一样,所以只执行一次就行了,建议用的时候,就在调
试的时候进行执行一次就可以,以后都不需要出现了,除非再次更改。
在调用AlternateFunctionRemapping函数之前需要初始化串口函数Uart_Init
这些设置写进flash,运行一次即可,在调试的时候运行即可
******************************************************************************/
voidAlternateFunctionRemapping(Remap_Function_TypeDefFunction)
{
uint8_tFunction_temp;
FLASH_Unlock(FLASH_MEMTYPE_DATA);
/*要对选项字节写操作,必须要先解锁FLASH*/
while(!
(FLASH->
IAPSR&
FLASH_IAPSR_DUL));
/*等待解锁完毕*/
/*备选功能重映射的设置可以同时写多个不会被覆盖,因此在操作之前读取当前的状态,再根据当前的状态进行修改*/
Function_temp=(uint8_t)(FLASH_ReadOptionByte(AFR_ADDRESS)>
>
8);
#ifdef
DEBUG_AFR
printf("
\r\nFunction_temp:
%x\r\n"
Function_temp);
#endif
FLASH_ProgramOptionByte(AFR_ADDRESS,Function|Function_temp);
FLASH_Lock(FLASH_MEMTYPE_DATA);
/*操作完要加锁*/
只要调用我的这个函数就可以
恢复初始值
DefaultFunctionRemapping
恢复默认功能的设置
Function需要恢复默认的功能
在调用DefaultFunctionRemapping函数之前需要初始化串口函数Uart_Init
voidDefaultFunctionRemapping(Default_Function_TypeDefFunction)
FLASH_ProgramOptionByte(AFR_ADDRESS,Function&
Function_temp);
AFR7_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)0xfe
}Default_Function_TypeDef;
调用这个函数就可以恢复原来的设置了。
第二种方式就是用ST-LINK结合IAR设置,详情请见楼主位的9和14这2份教程,很清楚的介绍
查看:
2803|回复:
15
[STM8]
stm8的选项字节软件里怎么配置
[复制链接]
此帖已结(0)
stmsky
禁止访问
积分
342
帖子
94
本月在线
0小时0分
专家等级:
结帖率:
0%
电梯直达
1#
stmsky
发表于2010-4-913:
46:
42
|倒序浏览
|返回版面
回复
提示:
作者被禁止或删除内容自动屏蔽
分享0
收藏0
评分
举报
jgphu
助理工程师
1920
606
1小时15分
98%
2#
jgphu
发表于2010-8-1020:
51:
07
我也想问你这个问题
版主
45189
14302
2小时15分
100%
3#
香水城
发表于2010-8-1021:
43:
23
请按照手册中介绍的这样,先使能对Optionbyte的写操作,然后直接写入要操作的字节即可。
STM8S_Writing_Option_Byte.GIF
(15.72KB,下载次数:
65)
Idonotteach,butIcoach.Idonotfeed,butIseed.
欢迎访问我的博客:
pkat
高级工程师
7437
2376
8%
4#
pkat
发表于2010-8-1108:
49:
40
按手册上的操作就可以了,如果看不明白英文版的,我这里还有中文版的
32446975
中级技术员
216
70
5#
32446975
发表于2010-9-1409:
01
收藏.
STM32,STM8,51,PIC,AVR。
QQ:
281342118
bluefeel
实习生
42
14
6#
bluefeel
发表于2010-9-1417:
04:
34
火箭球迷
技术达人
9630
3137
4%
7#
火箭球迷
发表于2010-9-1418:
03:
05
认真看一下香主给的资料,就知道怎么配置了
姚明的铁杆球迷
8#
发表于2010-9-1510:
02:
下面的程序是产品验证过的。
flash.h"
/*
**-----------------------------------------------------------------------------
**
**
Abstract:
读FLASH选项字节的值
Parameters:
Address
选项字节地址
Returns:
返回选项字节某个地址的值,高8位为Address的值,低8位为Address+1的值
*/
unsignedintFlash_ReadOptionByte(unsignedintAddress)
unsignedcharvalue_optbyte,value_optbyte_complement=0;
unsignedintres_value=0;
value_optbyte=*((@nearunsignedchar*)Address);
value_optbyte_complement=*(((@nearunsignedchar*)Address)+1);
res_value=(unsignedint)value_optbyte<
<
8;
res_value|=(unsignedint)value_optbyte_complement;
return(res_value);
擦除选项字节某个地址的值
Address 选项字节某个地址
None
voidFlash_EraseOptionByte(unsignedintAddress)
FLASH_CR2|=0x80;
//对选项字节进行写操作
FLASH_NCR2&
=~0x80;
*((@nearunsignedchar*)Address)=0x00;
*((@nearunsignedchar*)(Address+1))=0xff;
Flash_WaitForLastOperation();
FLASH_CR2&
//对选项字节写禁止
FLASH_NCR2|=0x80;
写选项字节某个址址的值
Address 选项字节某个地址 Data 要写的数据
voidFlash_ProgramOptionByte(unsignedintAddress,unsignedcharData)
//解除写保护密钥
*((@nearunsignedchar*)Address)=Data;
*((@nearunsignedchar*)(Address+1))=~Data;
选项字节擦写等待
unsignedcharFlash_WaitForLastOperation(void)
unsignedcharflagstatus=0;
unsignedint
timeout=0x1000;
while((flagstatus==0)&
&
(timeout!
=0))
{
flagstatus=FLASH_IAPSR&
0x05;
timeout--;
}
if(timeout==0)
flagstatus=0x02;
//timeouterror
对选项字节的操作
voidFlash_OptionOperation(unsignedintAddress,unsignedcharData,unsignedintValue)
unsignedinttemp=0;
do
temp=Flash_ReadOptionByte(Address);
if(temp!
=Value)
Flash_ProgramOptionByte(Address,Data);
if(temp==Value)
temp=0;
}while(temp);
FLASH_IAPSR&
=~0x08;
//EEPROM写保护使能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm8 选项 字节 设定 剖析