stm8l151 怎么切换时钟到外部低速

STM8S HSE自动切换遇到的问题==
热门型号:
&&&当前位置:
STM8S HSE自动切换遇到的问题
用户名:qigongwei
注册时间: 1:09:00
STM8S HSE自动切换遇到的问题
这两天遇到客户提出的一个问题,讲的是STM8S的时钟自动切换出现问题,始终无法切换到外部时钟源(HSE),但切换HSI、LSI均正常。偶一听还有这种事?客户用来测试的硬件是ST官方的,MCU型号是,版本:A,时间:801,供电5V。工作性质的习惯性思维,不会是客户对寄存器访问操作的失误导致的?自己看了一下STM8S的手册与CLK模块解释。STM8S主时钟支持4个不同的时钟源:1、1MHz-24MHz外部晶体振荡器(HSE)2、最大24MHz的高速时钟源(HSEuser-ext)3、内部16MHz高速RC振荡器(HSI)4、内部128KHz低速RC振荡器(LSI)每个时钟源均可自由切换、关闭;STM8S上电以后自动使用2MHz时钟(HSI/8),Reset成功后允许用户代码切换时钟源。切换时钟有两种方法,自动和手动两种,这里只说自动切换。1、自动切换:1)、允许时钟自动切换模式,CLK_SWCR.SWEN=1;2)、配置时钟源CLK_SWR=Clocksource;此时原来的HSI时钟源还能就是主时钟,操作完成后硬件自动置位CLK_SWCR.SWBY=1,外部时钟源开始起振;3)、HSE时钟准备好,CLK_CMSR=CLK_SWR;4)、检查CLK_SWCR.SWBSY?=0,是时钟切换成功。5)、可选步骤:假如打开CLK_SWCR.SWIEN中断,则会产生相应中断,并将CLK_SWCR.SWIF中断标准位置1;步骤1)、2)、为软件必做,3)为硬件操作,4)做为可选项,软件增加系统可靠性。按照手册上提供的处理流程,软件需要做的也很简单:感觉好像不是什么很严重的问题,给客户回了一封邮件。要求客户使用STM8S固件库中的时钟自动切换函数:CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,DISABLE);客户没过多久回电话说还是不行,与客户沟通,了解了一下详细的故障描述。1、代码执行到CLK_ClockSwitchConfig()函数的while(((CLK-&gtSWCR&CLK_SWCR_SWBSY)&&(DownCounter!=0))){DownCounter--;}if(DownCounter!=0){Swif=SUCCESS;}else{Swif=ERROR;//总是失败--在设定的时间内时钟切换总是失败}现象是PC指针跑飞?2、HSI、LSI切换正常,MCO引脚可以监视到时钟输出;3、切换HSE的时候,虽然失败,但监视到外部晶振起振;这可就不得解了,当时手上没有STM8/128-EVAL,答应客户第二天测试一下看看现象到底是什么原因导致的。按现在发帖的时间应该是昨天上午,拿到一块STM8/128-EVAL开发板,按照客户的说法,做了同样的测试,确实出现了客户描述的现象,但有些内容不相同:1、切换HSE的时候,MCO和OSCOUT均未能监视到信号;2、Reset的时候,可以看到OSCOUT出现短暂的波形,用示波器捕捉,确实是24MHZ(这里一直没介绍,STM8S的datasheet介绍STM8最大工作频率24MHz,3级流水线,顺带给STM8S卖个瓜),只是这个波形挺难看的,有些畸型。很奇怪,客户也提到不会是STM8S的固件库有问题?既然这样,那就用汇编,直接对寄存器操作,现象依旧。检查了一下硬件,跳线、供电、连线都没发现有任何问题。奇怪了,那用ST-ICE试试。接上ST-ICE,Run,一切正常。这可就更不解了。ST-ICE应该可以排除评估板的硬件问题,况且我和客户的两块板都出现相同的问题,没这么巧合。打电话咨询了一下ST。ST深圳的FAE解释:STM8S上电后,自动使用HSR/8,也就是2MHz运行,通过optionbyte的EXTCLK选择使用外部晶振,MCU会在外部晶振准备好后自动切换过去。这么解释,看来也可以理解为optionbyte的时钟选项在MCU启动后时钟选择的优先级更高。Ok,如果是这样,验证简单。写了一个IO输出的函数,加上一个CLK_CCOConfig(CLK_OUTPUT_MASTER)函数,直接通过STVP烧录MCU,按要求EXTCLK选择使用外部晶振。实际测试的结果是PE0(MCO)输出2MHz时钟,PA2(OSCOUT)无时钟信号。现象依旧,ST深圳的FAE答应帮忙测一下,只是说忙,不知何时答复。看来靠不住,还得自己想想办法,晕。看来找自己上海的兄弟瞎掰一下,问问上海ST的瞧瞧,有没有什么好的建议。不出一个小时,上海的哥们回话,得到的答复是,建议使用16MHz以下的晶振测试,即可。这样?好吧,一直没怀疑的就是晶振。为何?ST的板出厂应该会出货测试吧。换上一个16MHz的晶振,OK,一切如期望的,正常。为了搞清楚这鬼晶振,继续测试,12MHz、10MHz、8MHz、6MHz、20MHz,把我能找到的频率都一个个插上去测试了一下,一切都正常。一直没有太注意时钟的问题,这会将STM8S的datasheet电气参数特征、参考手册CLK章节仔细看了一遍。下面的问题,希望ST能帮忙解释一下:1、STM8S的时钟,按照手册的描述,是否OptionByte的优先级会高过上电后立刻执行自动切换时钟操作?是否有确切的参数描述,上电到切换HSE成功,总共需要花费多少时间?2、STM8S20xx的手册,目前最新的版本Rev6December2008Page53:Page62:ST给出fCPUmax参数是24MHz,在功能保证的情况下是如何可以测试晶振可以气振?
用户名:8bit_mcu
注册时间: 9:24:00
你用24MHz时有没有配置option&byte的waitstate?默认为0,你要将其设为1,否则访问Flash会出错。
用户名:8bit_mcu
注册时间: 9:27:00
上电复位后跑的是HSI/8,然后你需要根据手册上的自动/手动方式用程序将时钟切过去。应该不会自动自己切的。
用户名:gzhwb
注册时间: 11:34:00
把waitstate设置为1就可以了,但副作用是每个指令增加一个CPU时钟周期的执行时间。我们用在比较高速的信号处理上,低于20MHz的CPU时钟完成不了任务,且不能把waitstate设置为1。我们试过20.48MHz,常温下,不把waitstate设置为1也能正常工作。&&&按STM8&datasheet里所建议:“1&wait&state&is&required&if&fCPU&&gt&16&MHz.”,所以我们的用法已经超过厂家的建议。请问厂家的技术支持,这个指标是否有余量?我们这样使用风险如何?尤其是在-40度和+80度这种极端条件下使用是否有问题?如果实在不行,我们只好再选型了。
用户名:8bit_mcu
注册时间: 12:01:00
我觉得这样你平时跑跑就算了,用在产品上是有很大风险的。因为stm8的flash的速度就这么快,到底有多少余量谁也不知道,相信st肯定只会对spec以内的性能作保证。
用户名:箫笑
注册时间: 9:18:00
还有人关注吗这个问题?
我也遇到了,在三合一的STM8S上切换没有问题,换作STM8AH的就切换不了,晶振不起振,看了LZ的文章以后,特意改成8M的晶振,问题依然存在.
LSI与HSI的切换就OK.
热门型号:查看: 9170|回复: 1
stm8l单片机官方参考资料大全
主题帖子积分
I. 芯片文档
1. 参考手册索引文档版本英文文档中文文档软件包软件版本更新时间RM00135.1无无2013-07文档说明:STM8L101xx微控制器系列
(STM8L101xx microcontroller family)RM003110无无2013-07文档说明:STM8L15x和STM8L16x微控制器系列
(STM8L15x and STM8L16x microcontroller family)
2. 数据手册索引文档版本英文文档中文文档软件包软件版本更新时间DS601513无无2014-04文档说明:【STM8L101xx】8位超低功耗微控制器产品,具有多达8K字节闪存、多功能定时器、比较器、USART、SPI、I2C模块
(8-bit ultralow power microcontroller with up to 8 Kbytes Flash, multifunction timers, comparators, USART, SPI, I2C)DS637213无无2013-09文档说明:【STM8L151x4, STM8L151x6, STM8L152x4, STM8L152x6】8位超低功耗微控制器产品,具有多达32K字节闪存、1K字节数据EEPROM、RTC、LCD控制器、多个定时器、USART、I2C、SPI、ADC、DAC、比较器
(8-bit ultralow power MCU, up to 32 KB Flash, 1 KB Data EEPROM, RTC, LCD, timers, USART, I2C, SPI, ADC, DAC, comparators)DS69486无无2013-09文档说明:【STM8L151x8 STM8L152x8 STM8L151R6 STM8L152R6】8位超低功耗微控制器,高达64 KB的闪存,高达2KB的数据EEPROM,实时时钟,液晶显示器,定时器,USART接口和I2C,SPI接口,ADC和DAC,比较器
(8-bit ultralow power MCU, up to 64 KB Flash, up to 2KB data EEPROM, RTC, LCD, timers, USARTs, I2C, SPIs, ADC, DAC, comparators )DS69553无无2013-06文档说明:【STM8L162R8 STM8L162M8】8位超低功耗微控制器,64 KB闪存,2 KB的数据EEPROM,实时时钟,AES公司,液晶显示器,定时器,USART接口和I2C,SPI接口,模数转换器,数模转换器,COMPs
(8-bit ultralow power MCU, 64 KB Flash, 2 KB data EEPROM, RTC, AES, LCD, timers, USARTs, I2C, SPIs, ADC, DAC, COMPs )DS72044无无2013-06文档说明:【STM8L151C2/K2/G2/F2 STM8L151C3/K3/G3/F3】8位超低功耗MCU,最多为8 KB闪存,256 B的数据EEPROM,实时时钟,定时器,USART,I2C,SPI,ADC,比较器
(8-bit ultralow power MCU, up to 8 KB Flash, up to 256 B data EEPROM RTC, timers, USART, I2C, SPI, ADC, comparators )DS91091无无2013-06文档说明:【STM8L052C6】超值型,8位超低功耗微控制器,32KB闪存,256B数据EEPROM,RTC,LCD,TIM,USART,I2C,SPI和ADC
(Value Line, 8-bit ultralow power MCU, 32-KB Flash, 256-byte data EEPROM, RTC, LCD, timers, USART, I2C, SPI, ADC)DS91112无无2013-06文档说明:【STM8L052R8】超值型,8位超低功耗微控制器,64KB闪存,256B数据EEPROM,RTC,LCD,TIM,USART,I2C,SPI和ADC
(Value Line, 8-bit ultralow power MCU, 64-KB Flash, 256-byte data EEPROM, RTC, LCD, timers, USART, I2C, SPI, ADC)DS91782无无2014-04文档说明:【STM8L051F3】超值型,8位超低功耗单片机,8 - kb大小的Flash,256字节的数据EEPROM,RTC,计时器,USART,I2C、SPI,ADC
(Value Line, 8-bit ultralow power MCU, 8-KB Flash, 256-byte data EEPROM, RTC, timers, USART, I2C, SPI, ADC )
3. 数据勘误手册索引文档版本英文文档中文文档软件包软件版本更新时间ES00024无无2013-07文档说明:【STM8L051F3, STM8L151x2 ,STM8L151x3 revision Z】STM8L051F3, STM8L151x2 和STM8L151x3 版本Z设备局限
(STM8L051F3, STM8L151x2 and STM8L151x3 revision Z device limitations)ES001914无无2013-07文档说明:【STM8L152x4/6 STM8L151x4/6 revB revZ】STM8L152x4/ 6和STM8L151x4/6设备的限制
(STM8L152x4/6 and STM8L151x4/6 device limitations)ES01216无无2013-07文档说明:【STM8L101xx revision “B”, “Z” ,“Y”】STM8L101xx的局限性
(STM8L101xx limitations)ES01315无无2013-07文档说明:【STM8L15xM8/R8/C8/R6、STM8L162x8,revZ】STM8L15xM8/R8/C8/R6和STM8L162x8设备的限制
(STM8L15xM8/R8/C8/R6 and STM8L162x8 device limitations )ES01384无无2013-07文档说明:【STM8L151x2 STM8L151x3 revision Z】STM8L151x2和STM8L151x3修订Z设备的限制
(STM8L151x2 and STM8L151x3 revision Z device limitations )
4. 编程手册索引文档版本英文文档中文文档软件包软件版本更新时间PM00443.3无无2012-11文档说明:STM8 CPU编程手册
(STM8 CPU programming manual)PM00549无无2013-07文档说明:如何对STM8L的Flash和EEPROM编程
(How to program STM8L Flash program memory and data EEPROM)
5. 应用笔记索引文档版本英文文档中文文档软件包软件版本更新时间AN10151.7
(第1版)无2014-03文档说明:提升微控制器EMC性能的软件技术
(Software techniques for improving microcontroller EMC performance)AN10681.2无无2012-11文档说明:为微控制器选择ROM,FASTROM和FLASH的烧录方式
(Selecting between ROM, FASTROM and Flash for a microcontroller)AN11811.4
(第1版)无2014-03文档说明:静电放电测量灵敏度
( Electrostatic discharge sensitivity measurement)AN14762.1无无2012-11文档说明:家电类应用的低功耗设计
(Low-cost power supply for home appliances)AN17091.7
(第1版)无2014-03文档说明:使用ST MCU的EMC设计指南
(EMC Design Guide for ST Microcontrollers)AN26393.2
(第3版)无2014-04文档说明:有关MCU无铅封装的信息和焊接建议
(Soldering recommendations and package information for Lead-free ECOPACK(R) microcontrollers)AN26594.1无2.0.02013-07文档说明:使用用户自定义的启动程序实现STM8在应用中编程(IAP)
(STM8 in-application programming (IAP) using a customized user-bootloader)AN27192.5无1.02013-07文档说明:针对STM8微控制器的A/D转换精度提升技术
(Precision improvement techniques for the A/D converter of the STM8 microcontroller)AN28605无无2013-07文档说明:STM8微控制器EMC指南
(EMC guidelines for STM8 microcontrollers)AN28676无无2013-07文档说明:ST MCU的振荡器设计指南
(Oscillator design guide for ST microcontrollers)AN29572.1无1.1.02013-07文档说明:使用IR定时调制器在STM8L10x微控制器上实现RC5红外发射器
(Implementing an RC5 infrared transmitter using the IR timer modulator of the STM8L10x microcontroller)AN29791.3无1.02013-07文档说明:使用STM8L101xx的比较器实现一个简单的ADC
(Implementing a simple ADC using the STM8L101xx comparator)AN30295无无2013-08文档说明:STM8L和STM8AL入门
(Getting started with STM8L and STM8AL)AN31015无1.1.02013-07文档说明:STM8L15x内部RC振荡器的校准
(STM8L15x internal RC oscillator calibration)AN31143无1.1.02013-07文档说明:如何使用STM8L15x的LCD控制器
(How to use the STM8L15x LCD controller)AN31174无1.02013-07文档说明:使用STM8L15x的DMA控制器
(Using the STM8L15x DMA controller)AN31335无无2013-07文档说明:使用STM8L15x的实时时钟(RTC)
(Using the STM8L15x real-time clock (RTC) )AN31373无1.02013-07文档说明:STM8L产品的A/D转换器:说明和提高准确性的技术
(A/D converter on STM8L devices: description and precision improvement techniques)AN31393.1无无2013-07文档说明:STM8L微控制器的移植和兼容性指南
(Migration and compatibility guidelines for STM8L microcontroller applications )AN31473无无2013-09文档说明:STM8L系列产品的电源管理
(STM8L family power management)AN31812.0无1.1.02013-07文档说明:在STM8的应用上获得IEC60335类型B认证指南
(Guidelines for obtaining IEC60335 Class B certificationin an STM8 application)AN32253无1.0.02013-07文档说明:STM8L15xxx音频编解码器软件
(Audio software codec for the STM8L15xxx)AN32483无无2013-07文档说明:STM32L15xxx模拟比较器
(STM32L15xxx analog comparators)AN32521无无2012-11文档说明:使用STM8L-DISCOVERY设计波形生成器
(Building a wave generator using STM8L-DISCOVERY)AN32691.2无1.2.52013-05文档说明:通过STM8L-DISCOVERY的IDD测量功能,介绍STM8L15x的低功耗模式
(Introduction to STM8L15x power saving modes using the STM8L-DISCOVERY IDD measurement feature)AN32702无1.0.22013-07文档说明:使用STM8L16x AES硬件加速器
(Using the STM8L16x AES hardware accelerator)AN32812.1无1.0.02013-07文档说明:STM8 优化I2C例程
(STM8 I2C optimized examples)AN33971无无2012-11文档说明:温度传感器的例子,该例子使用STM8L-DISCOVERY板
(Temperature sensor example using the STM8L-DISCOVERY board)AN39852.1无1.02013-05文档说明:使用STM8L微控制器的CR95HF例程库
(Using the CR95HF library with STM8L microcontrollers)AN39923.1无12013-07文档说明:使用STM8L16x的AES硬件模块配合CR95HF例程库实现对非接触式标签数据存储的加密
(Using an STM8L16x AES hardware accelerator with a CR95HF to encrypt contactless tag data memory)
6. 用户手册索引文档版本英文文档中文文档软件包软件版本更新时间UM04627.1无2.6.02014-03文档说明:STM32和STM8闪存烧录例程
(STM32(TM) and STM8(TM) Flash loader demonstrator)UM04703.3无无2012-11文档说明:STM8的SWIM通信协议和调试模块
(STM8 SWIM communication protocol and debug module)UM05292.1无无2013-07文档说明:STM8L101-EVAL评估板
(STM8L101-EVAL evaluation board)UM05608无2.42013-12文档说明:STM8L/S的启动程序(bootloader)
(STM8L/S bootloader)UM06292.1无无2012-11文档说明:STM8L101-EVAL 评估板
(STM8L101-EVAL evaluation board)UM06841.1无无2013-07文档说明:STM8L1526-EVAL评估板
(STM8L1526-EVAL evaluation board)UM06931.6无1.1.02014-03文档说明:STM8L101-EVAL评估板演示程序
(STM8L101-EVAL demonstration firmware)UM07742.2无0.52014-03文档说明:STM8L15LPBOARD低能演示板
(STM8L15LPBOARD low-power demonstration board)UM07841.3无1.2.12013-07文档说明:STM8L1526-EVAL评估板演示程序
(STM8L1526-EVAL demonstration firmware)UM07892无无2012-11文档说明:计数器与STM8L101xx低功耗的单片机和液晶显示器
( Counter with the STM8L101xx low-power microcontroller and LCD)UM09702无无2012-11文档说明:STM8L-探索
(STM8L-DISCOVERY)UM09811无无2012-11文档说明:基于STPM度量IC、STM8L152C6单片机的单相电度计量表
(Single-phase energy meter based on the STPM metering IC and STM8L152C6 MCU)UM09912无2.0.12013-05文档说明:开发和调试你的STM8L-DISCOVERY应用程序代码
(Developing and debugging your STM8L-DISCOVERY application code)UM10001.2无0.52013-05文档说明:STM8L1528-EVAL示范固件库
(STM8L1528-EVAL demonstration firmware)UM10256无3.32013-11文档说明:开始体验STM-STUDIO
(Getting started with STM-STUDIO)UM10371无无2012-11文档说明:STM8L1528-EVAL评估板
(STM8L1528-EVAL evaluation board)UM15241无无2012-11文档说明:STEVAL-IPE012V2:单相能量计有80一个最大电流基于IC和STM8L152C6 MCU STPM10计量
(STEVAL-IPE012V2: single-phase energy meter with 80 A maximum current based on the STPM10 metering IC and STM8L152C6 MCU)UM15291无无2012-11文档说明:单相能量计有80一个最大电流基于STPM10计量IC和STM8L152C6单片机与双界面EEPROM
(Single-phase energy meter with 80 A maximum current based on STPM10 metering IC and STM8L152C6 MCU with dual interface EEPROM)
7. 技术笔记索引文档版本英文文档中文文档软件包软件版本更新时间TN01892.3无无2013-08文档说明:STM8启动程序(bootloader)常见问题
(STM8 bootloader frequently asked questions)
post_newreply
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
sdftgjklikujtrgfedsaxdfghnmkujh
经常帮助其他会员答疑
积极宣传本站,为本站带来更多注册会员
长期对论坛的繁荣而不断努力,或多次提出建设性意见
活跃且尽责职守的版主
为论坛做出突出贡献的会员STM8L 系统时钟切换_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM8L 系统时钟切换
上传于|0|0|暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢STM8S内部时钟切换问题解决
STM8S内部时钟切换问题解决
发布时间: 23:52:34
编辑:www.fx114.net
本篇文章主要介绍了"STM8S内部时钟切换问题解决",主要涉及到STM8S内部时钟切换问题解决方面的内容,对于STM8S内部时钟切换问题解决感兴趣的同学可以参考一下。
**********************************************************************************************************************************
* Name&&& : STM8S内部时钟切换问题解决
* Author& : MingMing
* Release :
* Update& :
* E-mail& :
&&& 在使用STM8S105实现内部时钟切换的时候,发现时钟可以在HIS(内部高速时钟)和HSE(外部高速时钟)之间切换,而HSI(内部高速时钟)和LSI(内部低速时钟)之间的切换却不正常。当芯片上电或复位后芯片采用的是HSI/8作为主时钟源,这样我们可以将时钟源切换到外部时钟(16MHz)试试看。代码如下:
void Clock_Conversion (void)
CLK_ECKR |= MASK_CLK_ECKR_HSEEN;
/* 打开外部高速时钟源 */
while(CLK_ECKR_HSERDY == 0);
/* 等待时钟源信号稳定,稳定后CLK_ECKR_HSERDY置位 */
CLK_SWCR = MASK_CLK_SWCR_SWEN;
/* 转换使能,采用自动转换方式 */
= MASTER_CLOCK_HSE;
/* 选择外部高速时钟源 */
while(!(CLK_SWCR & 0x08));
/* 切换完成后,SWIF置位 */
&&& 通过上面的代码,观察LED灯的闪烁频率,可以确定已经成功的把HSI内部时钟源切换到HSE外部时钟源。采用同样的方法我们试着去切换HSI内部高速时钟源到LSI内部低速时钟源,代码如下:
void Clock_Conversion (void)
CLK_ICKR |= MASK_CLK_ICKR_LSIEN;
/* 打开内部低速时钟源 */
while(CLK_ICKR_LSIRDY == 0);
/* 等待时钟源信号稳定,稳定后CLK_ICKR_LSIRDY置位 */
CLK_SWCR = MASK_CLK_SWCR_SWEN;
/* 转换使能,采用自动转换方式 */
= MASTER_CLOCK_LSI;
/* 选择内部低速时钟源 */
while(!(CLK_SWCR & 0x08));
/* 切换完成后,SWIF置位 */
&&& 运行上面的代码,经过调试发现程序在while(!(CLK_SWCR & 0x08))处出现了死循环,SWIF未被置位。这就很奇怪了,代码第二句说明芯片的内部时钟源信号已经稳定,为什么切换不正常?貌似有一种无形的力量在限制着它。继续看芯片手册吧,在FLASH的章节中有一个Option byte(选项字节)的介绍。在选项字节中找到两块名字为OPT3和NOPT3的两处地址,OPT3和NOPT3的第四位控制着内部时钟的使能,终于这种无形的力量被找到了,那么开始想办法修改它吧。下面是关于LSI_EN的介绍:
&&& LSI_EN: Low speed internal clock enable
&&& 0: LSI clock is not available as CPU clock source
&&& 1: LSI clock is available as CPU clock source
&&& NLSI_EN: Low speed internal clock enable
&&& 0: LSI clock is available as CPU clock source
&&& 1: LSI clock is not available as CPU clock source
&&& 上图为存储单元的地址映射,操作Option bytes相当于操作存储地址,那么我们就好好看看操作Flash需要哪些步骤,首先看看Flash的操作寄存器。
&&& FLASH_CR2 :控制寄存器2
&&& OPT: 对选项字节进行写操作,该位可由软件来置位或清零。
&&& 0: 对选项字节进行写操作被禁止
&&& 1: 对选项字节进行写操作被使能
&&& FLASH_NCR2 :互补控制寄存器2
&&& NOPT: 对选项字节进行写操作,该位可由软件来置位或清零。
&&& 0: 对选项字节进行写操作被使能
&&& 1: 对选项字节进行写操作被禁止
&&& FLASH_DUKR :DATA EEPROM解除保护寄存器
&&& 根据上面的分析,在主函数中编写我们的代码。
void main( void )
FLASH_DUKR = 0xAE;
/* 写入第一个密钥 */
asm(&nop&);
FLASH_DUKR = 0x56;
/* 写入第二个密钥 */
asm(&nop&);
}while(!(FLASH_IAPSR & 0x08));
/* 判断解锁是否成功,如果出现死循环,尝试先写入第二个密钥*/
FLASH_CR2 = 0x80;
/* 解除OPT写保护 */
FLASH_NCR2 = 0x7F;
/* 解除OPT写保护 */
asm(&nop&);
*((unsigned char*)0x4805) = 0x08;/* 对OPT3中LSI_EN置位 */
*((unsigned char*)0x4806) = 0xF7;/* 对NOPT3中NLSI_EN清零 */
asm(&nop&);
Clock_Conversion ();
/* 转换时钟源到LSI内部低速时钟 */
ooooooooooooooooo
/* 其它模块代码省略 */
&&& 看到这里我们已经成功了,这是通过代码修改OPT的方法,官方为我们提供的ST Toolset中STVP烧录工具可以对OPT修改。打开STVP,选择OPTION BYTE页,找到LSI_EN在下拉框中将LSI设置为available,点击Program current tab。烧录成功之后,程序中无需再加入上面的配置代码,只需在程序中调用时钟转换的函数即可。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:

我要回帖

更多关于 stm8l151 外部中断 的文章

 

随机推荐