系列文章目录
1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例
前言
一个普通专科生,拿什么拯救你的未来? 史上最详细嵌入式系统设计师修炼手册 嵌入式硬件软件汇总
送给大学毕业后找不到奋斗方向的你(每周不定时更新)
上海市职业能力考试院 中国计算机技术职业资格网 上海市社会化评审职称申报指南
一、问题:
在STM8S103F2的手册中,有一个AFR2可以选择,但是在STVP中这个选项却是保留的,请问是为什么? 下图是STVP中的OPTION BYTE
二、解决方案
注意是STM8S系列的,其它的芯片配置字节可能是不一样的
#define FLASH_EOP 0X04
#define FLASH_DUL 0X08
void FLASH_Init(void)
{
unsigned char *flash_OPT2;
unsigned char *flash_NOPT2;
flash_OPT2=(unsigned char*)0x4803;
flash_NOPT2=(unsigned char*)0x4804;
while( (FLASH_IAPSR & FLASH_DUL) == 0X00 )
{
FLASH_DUKR = 0XAE;
FLASH_DUKR = 0X56;
}
FLASH_CR2 |= 0X80;
FLASH_NCR2 &= 0X7F;
1.修改参数,启用复用功能
2.OPT2 和 NOPT2要相反
*flash_OPT2 = 0X01;
while( (FLASH_IAPSR & FLASH_EOP) == 0 );
*flash_NOPT2 = ~*flash_OPT2;
while( (FLASH_IAPSR & FLASH_EOP) == 0 );
FLASH_CR2 &= ~0X80;
FLASH_NCR2 |= 0X80;
}
三、思路解析
首先明白我们在STVP中配置的叫什么 如上图,也就是说我们配置的是I/O口的重映射。那我们为何不能操作寄存器,在软件里写好,就不用自己烧写的时候配置了,上面代码就是直接编程寄存器的(OPT2寄存器) 这是上面代码的出处
|