STM8教程-第十四章 STM8S207 PWM 模块及其应用实例
STM8教程-第八章 STM8S207时钟编程及其实例

第八章STM8S207时钟编程及其实例本章介绍STM8S207 的时钟编程。
STM8S207 时钟控制器功能强大而灵活易用,允许程序运行中将主时钟从一个时钟源切换到另一个时钟源,而且同一个时钟源可以任意更改分频系数。
8.1 STM8 时钟控制简介时钟控制器功能强大而且灵活易用。
其目的在于使用户在获得最好性能的同时,亦能保证消耗的功率最低。
用户可独立地管理各个时钟源,并将它们分配到CPU 或各个外设。
主时钟和CPU 时钟均带有预分频器。
具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。
抗电磁干扰时钟配置寄存器为了避免由电磁干扰造成的对应用程序误写操作或系统挂起,大多数关键的时钟配置寄存器都有一个互补寄存器与之相对应。
系统将会自动检测这些关键寄存器与其互补寄存器之间是否匹配。
如果不匹配,则产生一个EMS 复位,从而使应用程序恢复到正常操作。
详情请参见时钟寄存器描述。
1、主时钟源介绍下面4种时钟源可用做主时钟1、1-24MHz 高速外部晶振(HSE)2、最大24MHz 高速外部时钟信号3、16MHz 高速内部RC 振荡器(HSI)4、128KHz 低速内部RC(LSI)所以总的来说可以分为三种时钟源,HSE、HSI、LSI2、时钟树,如下图所示由上图可以发现,作为f_cpu 的时钟源可以来源于f_hse、f_hsi 经过HSIDIV分频后的时钟、f_lsi 这三个时钟源。
而选择开关在CKM[7:0]中。
由此事实上可以作为f_master 的时钟源频率有:外部HSE 24MHz内部高速HSI 16MHz、2 分频的8MHz、4 分频的4MHz、8 分频的2MHz(复位默认时钟源)内部低速LSI 128KHz上面得到的频率是f_master 的频率,然后f_master 还可以通过CPUDIV 来分频后提供f_cpu 的时钟,CPUDIV 可以为1、2、4、8、16、32、64、128 分频,最终得到是CPU 的时钟频率f_cpu。
STM教程STMS定时器模块及其应用实例

S T M教程S T M S定时器模块及其应用实例集团标准化工作小组 [Q8QX9QT-X8QQB8Q8-NQ8QJ8-M8QMN]第十三章 STM8S207 定时器模块及其应用实例这一节,我们将向大家介绍如何使用 STM8 的定时器中的基本定时功能,STM8 的定时器功能十分强大,有 TIM1 高级定时器,也有 TIM2、TIM3 等通用定时器,还有TIM4 基本定时器。
在 STM8S 参考手册里面,定时器的介绍占了 1/3 的篇幅,足见其重要性。
这一节,我们分别介绍 TIM1 到 TIM4 定时器中的基本定时功能。
例程一、16 位高级控制定时器(TIM1)简介:TIM1 由一个 16 位的自动装载计数器组成,它由一个可编程的预分频器驱动。
TIM1 有 4 个通道,分别是 1 到 4。
分别对应于四个不同的捕获/比较通道。
高级控制定时器适用于许多不同的用途:基本的定时测量输入信号的脉冲宽度(输入捕获)产生输出波形(输出比较,PWM 和单脉冲模式)对应与不同事件(捕获,比较,溢出,刹车,触发)的中断与 TIM5/TIM6 或者外部信号(外部时钟,复位信号,触发和使能信号)同步高级控制定时器广泛的适用于各种控制应用中,包括那些需要中间对齐模式PWM 的应用,该模式支持互补输出和死区时间控制。
高级控制定时器的时钟源可以是内部时钟,也可以是外部的信号,可以通过配置寄存器来进行选择。
这一节我们实现的功能是基本的定时,关于 PWM 的编程留下以后的章节中。
还有建议大家研究更为深入的功能TIM1 的时基单元包括,如下图所示:● 16 位向上/向下计数器● 16 位自动重载寄存器●重复计数器●预分频器16 位计数器,预分频器,自动重载寄存器和重复计数器寄存器都可以通过软件进行读写操作。
自动重载寄存器由预装载寄存器和影子寄存器组成。
可在在两种模式下写自动重载寄存器:●自动预装载已使能(TIM1_CR1 寄存器的 ARPE 位置位)。
STM8教程-第八章 STM8S207时钟编程及其实例

第八章STM8S207时钟编程及其实例本章介绍 STM8S207 的时钟编程。
STM8S207 时钟控制器功能强大而灵活易用,允许程序运行中将主时钟从一个时钟源切换到另一个时钟源,而且同一个时钟源可以任意更改分频系数。
STM8 时钟控制简介时钟控制器功能强大而且灵活易用。
其目的在于使用户在获得最好性能的同时,亦能保证消耗的功率最低。
用户可独立地管理各个时钟源,并将它们分配到 CPU 或各个外设。
主时钟和CPU 时钟均带有预分频器。
具有安全可靠的无故障时钟切换机制,可在程序运行中将主时钟从一个时钟源切换到另一个时钟源。
抗电磁干扰时钟配置寄存器为了避免由电磁干扰造成的对应用程序误写操作或系统挂起,大多数关键的时钟配置寄存器都有一个互补寄存器与之相对应。
系统将会自动检测这些关键寄存器与其互补寄存器之间是否匹配。
如果不匹配,则产生一个 EMS 复位,从而使应用程序恢复到正常操作。
详情请参见时钟寄存器描述。
1、主时钟源介绍下面 4种时钟源可用做主时钟1、1-24MHz 高速外部晶振(HSE)2、最大 24MHz 高速外部时钟信号3、16MHz 高速内部 RC 振荡器(HSI)4、128KHz 低速内部 RC(LSI)所以总的来说可以分为三种时钟源,HSE、HSI、LSI2、时钟树,如下图所示由上图可以发现,作为 f_cpu 的时钟源可以来源于 f_hse、f_hsi 经过 HSIDIV分频后的时钟、f_lsi 这三个时钟源。
而选择开关在 CKM[7:0]中。
由此事实上可以作为 f_master 的时钟源频率有:外部 HSE 24MHz内部高速 HSI 16MHz、2 分频的8MHz、4 分频的4MHz、8 分频的2MHz(复位默认时钟源)内部低速 LSI 128KHz上面得到的频率是 f_master 的频率,然后 f_master 还可以通过 CPUDIV 来分频后提供 f_cpu 的时钟,CPUDIV 可以为 1、2、4、8、16、32、64、128 分频,最终得到是 CPU 的时钟频率 f_cpu。
STM8教程-第七章STM8S207GPIO模块及其应用

STM8教程-第七章STM8S207GPIO模块及其应用第七章STM8S207 GPIO模块及其应用本章终于开始STM8S207 的例程编写了,通过前面章节的学习,相信对STM8S207 已经有了一定的认识。
本章从STM8S207 最简单的IO 口模块开始STM8S207 的编程。
7.1 GPIO 简介STM8S207 内部有非常丰富的输入、输出端口资源,同时也集成了多种功能模块,其输入、输出引脚大多为复用引脚。
STM8S207 单片机的IO 口包括PA、PB、PC、PD、PE、PF、PG、PI 等52 个IO 口通用输入/输出口用于芯片和外部进行数据传输。
一个IO 端口可以包括多达8 个引脚,每个引脚可以被独立编程作为数字输入或者数字输出口。
另外部分口还可能会有如模拟输入,外部中断,片上外设的输入/输出等复用功能。
但是在同一时刻仅有一个复用功能可以映射到引脚上。
复用功能的映射是通过选项字节控制的。
请参考数据手册关于选项字节的描述。
每个IO 口都有 5 个对应的寄存器,IO 的工作方式也由这 5 个寄存器控制,它们分别为:1、数据方向寄存器2、配置寄存器13、配置寄存器24、输出数据寄存器5、输入数据寄存器一个I/O 口工作在输入还是输出是取决于该口的数据方向寄存器的状态。
7.1.1 GPIO 主要功能1、端口的各个位可以被单独配置2、可选择的输入模式:浮动输入和带上拉输入3、可选择的输出模式:推挽式输出和开漏输出4、数据输入和输出采用独立的寄存器5、外部中断可以单独使能和关闭6、输出摆率控制用以减少EMC 噪声7、片上外设的I/O 功能复用8、当作为模拟输入时可以关闭输入施密特触发器来降低功耗9、在数据输出锁存时支持读-修改-写10、输入兼容5V 电压11、I/O 口工作电压范围为1.6 V 到VDDIOmaxGPIO 模块框图7.2 IO 口的配置和使用每一个端口都有一个输出数据寄存器(ODR),一个引脚输入寄存器(IDR)和一个数据方向寄存器(DDR)。
STM8学习笔记——PWM模块

STM8学习笔记——PWM模块首先将管脚配置为推挽输出。
下面以向上计数模式为例来讲述PWM 产生的原理:TIMx 开始向上计数,TIMx_CNT 为计数值,计数一次加1,TIMx_ARR 确定了计数的上限,达到上限后计数器从0 开始重新计数,所以一次PWM 频率就由TIMx_ARR 来确定了,即计数器时钟*(TIMx_ARR-1),频率确定了,接下来就是占空比。
占空比是由TIMx_CCRx 来确定的,PWM模式1 下当TIMx_CNT=TIMx_CCRx 时,输出OCiREF 无效电平,至于有效电平是0 还是1,要设置TIMx_CCERx,这样产生了一个PWM 波形,可以说配置非常灵活,当TIMx_CCRx 为0 时,占空比就为0,当TIMx_CCRx 大于TIMx_ARR 时,就一直输出高电平(占空比100%)。
下图是个例子:以下是我写的一个参考程序,测试通过void TIM1_Init(void){//定时器1 初始化CLK_PCKENR1|=0x80;//开启定时器1 外设时钟TIM1_EGR=0x01;//重新初始化TIM1 TIM1_EGR|=0x20;//重新初始化TIM1 TIM1_ARRH=0x00;//设定重装载值TIM1_ARRL=254; TIM1_PSCRH=0;//预分频TIM1_PSCRL=9; TIM1_CR1=0;//边沿对齐,向上计数} void TIM1_PWM_Init(){ //TIM1_CCER1=0x03;//低电平有效//TIM1_CCMR1=0x70;//PWM 模式2TIM1_CCER1=0x01;//高电平有效TIM1_CCMR1=0x60;//PWM 模式1TIM1_CCR1H=0;//占空比TIM1_CCR1L=50; TIM1_CR1|=0x01;//向上计数,无缓存,使能TIM1_BKR=0x80;//开启刹车}tips:感谢大家的阅读,本文由我司收集整编。
stm8s的c语言编程例程

实例一:控制灯的亮灭(或者蜂鸣器响,只要连接相应端口就可以了):#include ""大24MHz高速外部时钟信号(HSE user-ext)高速内部RC振荡器(HSI)低速内部RC(LSI)各个时钟源可独立打开或者关闭,从而优化功耗。
HSE:高速外部时钟信号,由两个时钟源产生:HSE外部晶体/陶瓷谐振器;HSE用户外部有源时钟。
(为了最大限度的减少输出失真和减少启动失真的稳定时间,谐振器和负载电容应尽可能的靠近谐振器引脚。
负载电容值应根据所选的谐振器进行调整。
)外部1至24MHz的振荡器其优点在于能够产生精确的占空比为50%的主时钟信号。
为使系统快速启动,复位后时钟控制器自动使用HSI的8分频(HSI/8)做为主时钟。
其原因为HSI的稳定时间短,而8分频可保证系统在较差的V条件下安全启动。
时钟设置的目的到底是什么时钟设置肯定会出现中断貌似是这样的:运用合适的时钟配置可以使得功耗降低,有时候计数频率很大,需要很大的计数或者怎么样时,需要使用其他的时钟,即非默认的时钟!暂且这样解释!例题四:利用中断按键控制灯的亮灭。
#include ""断产生——在计数器更新时:计数器溢出。
Timer6的主要功能:位向上计数的自动重载计数器位可编程的与分配器(可在运行中修改),提供1,2,4,8,16,32,64,和128这8种分频比例。
3.用于和外部信号相连和定时器级联的同步电路4.中断产生:——在计数器更新时:计数器溢出——在触发信号输入时。
Timer4和timer6中断:该定时器的时钟源是内部时钟(Fmaster)。
该时钟源是直接连接到CK_PSC时钟的,CK_PSC 时钟通过预分频器分频后给定时器提供CK_CNT时钟。
预分频器功能如下:1.预分频器是基于由一个3位寄存器(在TIMX_PSCR寄存器中)来控制的一个7位的计数器。
由于该控制寄存器是带缓冲的所以它可以在系统运行中被改变。
单片机实践-8位PWM应用举例

CONTENTS
任务要求 绘制原理图 编写代码 观察现象
1 任务要求
任 务 : 利用PCA模块的PWM功能,在P1.1引脚上输出占空比为25%的PWM脉冲 ;PCA计数器每溢出中断100次,P1.3引脚电平取反;PWM由低变高产生中断,每中 断2000次,P1.4引脚电平取反一次。采用示波器监测PWM波形,并观察P1.3和P1.4 两引脚LED闪烁速度,设晶振为24MHz。。
4 观察效果
1、在Proteus中导入HEX文件,点击运行图标,用示波器测量P1.3、P1.4、 P1.1的波形。 2、使用STC-ISP下载HEX文件到 单 片 机 , 用 示 波 器 测 量 P1.3 、 P1.4、P1.1脚的波形。
THANK YOU
3 编写代码
②采用PWM/PCA的模块0, PCA模块的计数时钟源决定 PWM输出脉冲的频率,但与 PWM的占空比无关,PWM的 占空比=(256 -(CCAP0L)) / 256 = 25%,所以CCAP0L为 C0H。另外,PWM无须设置中 断,但PCA模块的计数器必须设 置中断。
① 置位CCAPM0寄存器的ECOM0、CAPPn、PWM0和ECCF0,即CCAPM0=0x63。
具体要求: 1、使用Proteus设计电路图; 2、编写代码,实现PWM输出; 4、在Proteus和实训板上面观察效果。
2 绘制电路原理图
从器件库中找到3个器件: (1)STC15W4K58S4 ( LQFP44 封 装 ) (2)电阻RES (1)LED-RED
放置示波器,测量P1.1脚波形。
一款基于STM8S系列单片机的洗碗机控制器设计及实现

一款基于STM8S系列单片机的洗碗机控制器设计及实现摘要:文章简要介绍了全自动洗碗机的工作原理及主要功能,分析了洗碗机的几个主要检测对象及控制对象的具体控制需求。
给出了一款以STM8S系列单片机为控制核心的洗碗机控制器的具体设计方案,介绍了系统各主要功能模块的原理图设计、软件总体框架结构以及部分软件模块的设计思路等。
该方案同时考虑了兼容性设计的问题,可兼容两种显示方案,三种类型的洗涤电机以及多种运行参数选择。
关键词:STM8S;单片机;兼容性设计;洗碗机控制器;软件结构洗碗机在欧美已广泛应用于普通家庭的厨房中,有数据统计,在欧美主要国家,洗碗机的普及率已达到70%以上,几乎是家家户户必备的厨房生活电器。
而在中国,由于生活习惯的影响,洗碗机一直无法得到普及,但随着现代都市生活品质的不断提高,人们越来越关注生活中能带来更多便利的电器,洗碗机也在吸引着更多中国消费者的眼球,它的便利性正逐步得到人们的认可。
目前市场上Electrolux、SIEMENS、Whirlpool、SANYO、Hair、Midea等国内外著名品牌均推出其洗碗机产品,洗碗机产品具有很广阔的市场前景。
1工作原理及主要功能洗碗机是用于洗碗的机器,它可用于自动清洗碗、盘、碟、勺子、筷子等餐具。
根据洗碗机的用途、洗涤方式、安装方式、控制方式、开门方式等,可将它分为多种种类及型号。
本文主要讨论的是家用喷淋式全自动洗碗机的设计方案及实现方式,该产品也是目前家用洗碗机中最主要的产品形式。
此类型洗碗机的主要工作原理就是用水泵将加热后的水抽送到旋转喷臂,在水压的作用下喷臂会旋转,水通过旋转喷臂上的小孔向上下左右强力喷淋,辅助以清洁剂等物品,将碗碟上的油污等冲洗干净,从而达到清洗碗碟的目的。
喷淋式洗碗机工作原理如图1所示。
洗碗机的主要功能包括洗涤、消毒、烘干、预约、水质软化、掉电自动记忆、学习功能等,系统提供多种洗涤程序供用户选择,用户可根据需要选择普通、快速、强力、夜间、精细、自保养等洗涤模式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十四章STM8S207 PWM 模块及其应用实例
上一节我们学习了定时器中的基本定时器编程,这一节学习定时器里面一个PWM模块。
当终于到了PWM 模块编程时,有些许怀念,怀念过去的一年之中的日以继夜相对的PWM。
忘了介绍我们的团队---风驰,也就是第六届飞思卡尔比赛中的一个队伍。
1、PWM 介绍
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
简单一点,就是对脉冲宽度的控制。
PWM 在实际应用很广,例如上面提到的飞思卡尔智能车就用到PWM 控制舵机以及电机。
关于舵机是如何用PWM 控制的,这里不详细说明,有兴趣的建议查询相关知识。
这些在模型制作中应用十分广泛。
关于PWM 如果控制电机的这里略为说明,因为和本节有些许关联
普通直接电机在通电时以全电压工作,在没有PWM 控制电机之前是运用继电器通过不停开断实现对电机的速度控制。
引入PWM 就可以更为灵活控制电机。
PWM 是脉冲宽度可调的方波,在10K 左右的频率下,通过不同的占空比就可以得到近似稳定的电压。
例如输入5V,占空比为50%时,电压近似 2.5V。
我们这节实验也是应用PWM 这个特性。
利用PWM 中的占空比调节LED 的亮度。
关于PWM 的说明这里也简要说明,PWM 第一个参数是PWM 的周期,也就是一个PWM 的时间。
这个可以通过对应的寄存器进行设置,而我们的STM8S207 通过PSCR 设置定时器的时钟源CK_CNT,然后再通过ARR 寄存器设置周期。
例如我们这节的实验使用了16M 内部时钟源,LED4 是接着PD3 的,也就是TIM2_CH2,PSCR只能是2 的次幂,我们选择了4 分频。
CK_CNT = 4M,然后ARR 设置为200,分频200 后直接提供PWM 的时钟,所以f_pwm = 4M/200 = 20KHz。
20KHz 也是我们小车的频率啊,怀念!
第二个参数是占空比,例如30%,就是一个占30%,空70%,也可以在STM8S里面的解析为30%为无效电平,70%为有限电平。
所以这样在20KHz 的周期中高电平占了70%,30%为低电平。
当然这里只是举例说明,这些并非固定。
因为有效电平是可以程序设置的。
不同的单片机可以设置的参数也不尽相同。
例如之前使用的S12 单片机还有对齐方式等等功能设置。
2、PWM 寄存器设置
STM8S207 的PWM 功能是高级定时器或者通用定时器的一个附加功能,这和MC9S12XS128 的有些区别,但是唯一的不同是STM8S207 的PWM 会占用相应的定时器功能,两者是对立的,不能同时使用。
这里使用了除定时器章节中所使用的寄存器外,还添加了
捕获/比较模式寄存器TIMx_CCMRx
捕获/比较使能寄存器TIMx_CCERx
捕获/比较寄存器TIMx_CCRx
2.1 捕获/比较模式寄存器TIMx_CCMR2
因为这里使用的是TIM2_CH2 作为输出,所以介绍TIM2_CCMR2,其它的类似设置,详细内容请见STM8S 微控制器参考手册。
通道可用于输入(捕捉模式)或输出(比较模式),通道的方向由对应的CC2S定义。
该寄存器其它为的作用在输入和输出模式不同。
OCxx 描述了通道在输出模式下的功能,ICxx
描述了通道在输入模式下的功能。
因此必须注意,同一位在输出和输入模式下功能是不同的。
这里我们主要说明输出模式,也就是PWM 模式。
输出模式为:
OC2M:输出比较2 通道模式
000:冻结
001:匹配时设置通道2 为有效电平
010:匹配时设置通道2 为无效电平
011:翻转。
100:强制为无效电平
101:强制为有效电平
110:PWM 模式1。
向上计数时,一旦TIMx_CNT < TIMx_CCR1 时通道2 为有效电平,否则无效
向下计数时,一旦TIMx_CNT <=TIMx_CCR1 时通道2 有无效电平,否则有效111:PWM 模式2.
向上计数时,一旦TIMx_CNT < TIMx_CCR1 时通道2 为无效电平,否则有效
向下计数时,一旦TIMx_CNT <=TIMx_CCR1 时通道2 有有效电平,否则无效OC2PE:输出比较2 预装载使能,PWM 模式下一定要使能
0:禁止预装载使能,可随时写入TIMx_CCR2 寄存器,并且新写入的数据立即生效1:开启预装载使能,读写操作仅对预装载寄存器操作。
CC2S:捕获/比较2 选择。
这里定义了通道的方向,及输入脚的选择
00:CC2 通道配配置为输出
01:CC2 通道被配置为输入,IC2 映射在TI2FP2 上
10:CC2 通道被配置为输入,IC2 映射在TI1FP2 上
11:保留
配置为输人模式时
IC2F:输入捕获2 滤波器。
设置了采用频率以及数字滤波长度,详细请见数据手册IC2PSC:输入捕获2 预分频器。
定义了输入捕获的分频系数
CC2S:和输出模式一样,不再详细介绍。
2.2 捕获/比较使能寄存器TIMx_CCERx
这里只以TIM2 为例,如下:
CC2P:输入/输出通道2 输出极性
CC2 通道配置为输出时:
0:OC2 高电平有效
1:OC2 低电平有效
CC2 通道配置为输入时:
0:捕获发生在上升沿
1:捕获发生在下降沿
CC2E:输入/输出使能
CC2 通道配置为输出时:
0:关闭
1:开启
CC2 通道配置输入时:
0:禁止
1:使能
CC1P:与CC2P 对应
CC1E:与CC2E 对应
2.3 捕获比较寄存器
在输出模式下,该寄存器的值与CNT 的值比较,根据比较结果产生相应动作。
利用这点,我们通过修改这个寄存器的值,就可以控制PWM 的输出脉宽了。
#include "iostm8s207rb.h"
void CLK_Init(void);
void TIM2_PWM2_Init(void);
void delay_ms(int value);
main()
{
unsigned char i;
CLK_Init(); // 初始化时钟
TIM2_PWM2_Init(); // 初始化定时器的PWM功能
while(1) // 进入无限循环
{
// 下面的循环将占空比逐渐从0递增到50%
for(i=0;i<100;i++)
{
TIM2_CCR2H = 0;
TIM2_CCR2L = i;
delay_ms(10);
}
// 下面的循环将占空比逐渐从50%递减到0
for(i=100;i>0;i--)
{
TIM2_CCR2H = 0;
TIM2_CCR2L = i;
delay_ms(10);
}
}
}
// 函数功能:初始化定时器2的通道2,用于控制LED的亮度
void TIM2_PWM2_Init()
{
TIM2_CCMR2 = TIM2_CCMR2 | 0x70;// Output mode PWM2.
// 通道2被设置成比较输出方式
// OC2M = 111,为PWM模式2,
// 向上计数时,若计数器小于比较值,为无效电平
// 即当计数器在0到比较值时,输出为1,否则为0
TIM2_CCER1 = TIM2_CCER1 | 0x10;// CC polarity low,enable PWM output
// CC2P = 0,高电平为有效电平
// CC2E = 1,开启输出引脚
//初始化自动装载寄存器,决定PWM方波的频率,Fpwm=4000000/200=20KHZ TIM2_ARRH = 0;
TIM2_ARRL = 0xC8; //200
//初始化比较寄存器,决定PWM方波的占空比
TIM2_CCR2H = 0;
TIM2_CCR2L = 0;
// 初始化时钟分频器为4,即计数器的时钟频率为Fmaster=16MHZ,CK_CNT = 4M TIM2_PSCR = 2;
// 启动计数
TIM2_CR1 = TIM2_CR1 | 0x01;
}
void CLK_Init()
{
CLK_CKDIVR = 0x00; //16M主频
}
/*
********************************************
简单延时程序
******************************************** */
void delay_ms(int value)
{
int i,j;
if(value < 1)
value = 1;
for(i=0;i!=value;++i)
for(j=0;j!=5000;++j);
}。