STM8教程-第六章-STM8S207-的外部电路
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。
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。
STM8S单片机外部中断唤醒
STM8S单片机外部中断唤醒
一、STM8S 外部中断进行唤醒
先了解一下STM8S的中断资源
再看看STM8S的中断管理。
STM8S采用软件优先级和硬件优先级来控制一个中断的响应,先比较软件优先级只有当软件优先级一致时才会比较硬件优先级,由于硬件优先级具有唯一性,这样便保证了某一时刻定会只有一个中断被处理。
要使用外部中断,只需简单的配置一下EXTI_CR1寄存器,并将主程序main的软件优先级置为0即可。
默认情况下自复位开始,主程序的软件优先级被设置为3,处于最高软件优先级,仅有TRAP,TLI,RESET中断能够打断,其余的中断都是不会被响应的。
为了防止中断过程中被别的优先级高的中断所打断,可以将当前优先级置为最高3级。
代码如下:
main.c代码
//EXTI_CR1|=EXTI_CR1_PBIS_R;//PB5TRINT高电平触发
EXTI_CR1|=EXTI_CR1_PCIS_R;//PC3上升沿触发
//#defineEXTI_CR1_PCIS_R(1《《4)
RIM;//开全局中断,必须要有这句,否则只会响应不可屏蔽中断
//#defineHALT_asm(“halt”)
//#defineRIM_asm(“rim”)
//#defineSIM_asm(“sim”)
GPIO_Init(GPIOC,TRINT,GPIO_MODE_IN_PU_IT);//使能对应的IO口中断
stm8s_it.c代码
//收发中断(PC3)BJ8F101。
风驰STM8开发板例程教学
工程模板的创建在开发STM8的时候,首先要学会创建一个工程模板,所有的开发历程都是基于这个工程模板。
STM8有官方库,在开发的时候很方便,可以远离查寄存器的时代。
学过51单片机或者AVR的人都知道,查寄存器是很不方便的。
现在带大家进入一个利用库来开发单片机的新时代。
本开发板的所有例程都是基于库V2.0.0版本。
STM8的编译器是IAR Embedded Workbench。
下面叫大家如果去创建一个过程模板工程模板创建步骤:1、双击,打开IAR的界面,点击File->New->Workspace,点击Project->Create New Project,出现点击OK就行。
2、右击工程名就可以添加文件夹和文件,3、4、设置工程的Options,右击工程名->Options,设置其中两项,如下图5、在这里设置Device 为STM8S207RB 因为在我们风驰电子STM8开发板的主控芯片是STM8S207RB这里是设置编译路径,使用了3条语句$PROJ_DIR$\..\FWlib\inc$PROJ_DIR$\..\FWlib\src$PROJ_DIR$\..\USER$PROJ_DIR$\..意思是找到当前工程的上一级$PROJ_DIR$\..\FWlib\inc意思是先找到当前工程的上一级FWlib文件夹,再找到inc文件夹$PROJ_DIR$\.意思是当前文件夹这里是设置输出文件为可执行文件此外,我们还有修改一下头文件在stm8s.h的头文件修改#define STM8S207 /*!< STM8S High density devices without CAN */在stm8s_conf.h的头文件里修改你要用到的头文件,不要用到的资源的头文件可以把它注释调就可以,方便使用,到这里,相信大家都体会到用库的方便性了吧。
到这里 ,点击就可以编译成功了。
当你看到这里的话相信你会了怎样创建一个工程了。
STM8S系列单片机原理与应用(潘永雄)第6-11章章 (5)
第10章 数字信号输入/输出 接口电路
10.1 开关信号的输入/输出方式 10.2 I/O资源及扩展 10.3 STM8S与总线接口设备的连接 10.4 简单显示驱动电路 10.5 LED数码管及其显示驱动电路 10.6 LCD模块显示驱动电路 10.7 键盘电路 10.8 光电耦合器件接口电路 10.9 单片机与继电器接口电路 10.10 电平转换电路
第10章 数字信号输入/输出接口电路
(2) 作输出控制信号线时,必须了解MCU复位期间 和复位后该引脚的电平状态。 STM8S系列MCU芯片在复 位期间和复位后各I/O端口的状态,可参阅第2章有关内 容。
(3) 了解I/O端口输出级电路结构和I/O端口的负载能 力。只有准确了解MCU I/O端口输出级电路结构和负载 能力,才可能设计出原理正确、工作可靠的I/O接口电路。 对于输出口,当输出高电平时,给负载提供的最大驱动 电流就是该输出口高电平的驱动能力。当输出电流大于 最大驱动电流时,上拉P沟MOS管内阻上的压降将增加, VOH会下降。当VOH小于某一个数值时,后级电路会误 认为输入为低电平,产生逻辑错误(即使不产生逻辑错误, 后级输入电路功耗也会增加)。因此,要注意输出高电平 时的负载能力。
第10章 数字信号输入/输出接口电路 图10-1 开关信号输入/输出方式
第10章 数字信号输入/输出接口电路
在矩阵编码方式中,如果行线、列线均定义为输出 状态,就可以输出N × M个开关量。当行、列线中有一 组为输出线,另一组为输入线时,就构成了N × M个输 入检测点,如矩阵键盘电路。
第10章 数字信号输入/输出接口电路
第10章 数字信号输入/输出接口电路
由于74HC595对串行移位脉冲SCLK边沿要求较高,因 此当连线不太长时,将STM8S系列MCU引脚编程为快速推 挽输出方式后,可将MCU芯片I/O引脚与74HC595直接相连, 如图10-2(a)所示。如果连线较长或MCU芯片I/O引脚驱动能 力不足(如MCS-51兼容芯片的P1~P3口引脚)时,可在 74HC595芯片串行移位脉冲输入引脚前插入具有施密特触发 特性的反相器(如CD40106、74HC14等),使串行移位脉冲 SCLK及并行送数脉冲PCLK边沿变陡,如图10-2(b)所示。 在理论上加两个反相器,如图10-2(c)所示,可使SCLK、 PCLK保持上升沿有效,但会使系统功耗增加,因此不推荐 使用图10-2(c)所示的长线驱动方式。
STM8单片机入门
STM8 单片机入门
目录
1 STM8 微控制器简介 ............................................................................................................... 3 1.1 STM8S 系列 ................................................................................................................. 3 1.2 STM8L 系列 ................................................................................................................. 5 1.3 STM8A 系列 ................................................................................................................ 7 1.4 STM8 微控制器网站 ................................................................................................... 9
STM8S主要特点:
n 速度达20 MIPS的高性能内核 n 抗干扰能力强,品质安全可靠 n 领先的130纳米制造工艺,优异的性价比 n 程序空间从4K到128K, 芯片选择从20脚到80脚,宽范围产品系列 n 系统成本低,内嵌EEPROM和高精度RC振荡器 n 开发容易,拥有本地化工具支持
STM8S系列单片机原理与应用(潘永雄)第6-11章章 (2)
第7章 STM8S系列MCU定时器
TIM1定时器功能完善,可实现下列操作: (1) 基本定时操作、计数操作。 (2) 利用输入捕获功能,测量脉冲信号时间参数(高、低 电平时间)。 (3) 利用输出比较功能,可产生单脉冲信号、PWM信号 等。 (4) 在PWM输出信号中,具有死区时间编程选择功能。 (5) 具有与其他定时器联动的功能。
第7章 STM8S系列MCU定时器
表7-1 STM8S定时器的主要功能
定时器 计数 计数 编号 方向 长度
分频系数
捕获 /比较 (CC) 通道数
向上
1~65 536 之间任意
TIM1
16
4
向下
整数
互 补
重 复 计
外部 刹车 与其他定时
计数脉冲可选
输 数 输入 器级联
出器
可选,有外部 3 8 位 1 TIM5、TIM6
第7章 STM8S系列MCU定时器 图7-1 高级控制定时器TIM1的内部结构
第7章 STM8S系列MCU定时器
7.2 TIM1时基单元
TIM1时基单元内部结构如图7-2所示。它由16位预分频 器TIM1_PSCR(TIM1_PSCRH, TIM1_PSCRL)、16位双向(向 上或向下)计数器TIM1_CNTR(TIM1_CNTRH, TIM1_CNTRL)、 16位自动重装寄存器TIM1_ARR(TIM1_ARRH,TIM1_ARRL) 及8位重复计数器TIM1_RCR组成。
ST单片机STM8S开发入门教程
ST单片机STM8S开发入门教程最近ST在国内大力推广他的8位高性价比单片机STM8S系列,感觉性能上还是非常不错的,网上稍微看了点资料,打算有机会还是学习一下,先入门为以后做好技术积累。
好了,长话短说。
手上拿到一套ST最近做活动赠送的三合一学习套件,上面包括STM32F小板、ST LINK小板、STM8S小板,做工很精致,相信很多朋友也收到了。
既然当初去申请了,人家也送了,总得把用起来吧,放着吃灰尘是很可惜的^_^ 。
好,步入正题,刚开始在论坛上逛了一圈,感觉STM8S的资料实在太少,都是官方的应用资料,没有什么入门介绍,连需要安装什么软件都搞不清楚。
偶的电脑光驱坏了,所以也读不出光盘里有什么东西,所以只能到处瞎摸,还是ourdev论坛好,嘿嘿,仔细看了几个帖子,总算明白大概是什么样的开发环境了。
用C语言开发STM8S,需要安装两个软件:1、STVD IDE开发环境;2、COSMIC for STM8 C编译器。
STVD可以到官网下载,下载地址:COSMIC 需要申请LICENSE,比较繁琐,刚好坛子有人传了一个免安装无限制版本的,偶就赶紧下载了,大家可以去下载,仅做为个人学习使用。
下载地址:软件下载后,只需安装STVD。
从上面地址下载的COSMIC不用安装,只要解压到硬盘即可。
后面建立工程的时候设置好路径即可。
下面一步一步开始啦~一、安装好STVD后,桌面上建立了两个快捷图标,ST Visual Develop就是STVD了。
ST Visual Programmer是编程软件,可以配合ST LINK对STM8S进行编程烧录。
二、双击运行ST Visual Develop,启动STVD开发环境。
执行Workspace,在New Workspace 窗口里选择Create workspace and projects,点击“确定”建立工作组和工程三、在Workspace 里输入Workspace名称,由于最终我们要测试一个现成的LED程序,所以偶写了led,随你喜欢了,呵呵。
IAR FOR STM8例程
IAR+STM8——EXTI外部中断控制寄存器2013-03-21 23:23:15| 分类:STM8|举报|字号订阅这块三合一的开发板上有且只有一个按键,没办法,就拿这唯一的按键来用吧。
吸取前面UART3的教训,先看开发板的原理图吧。
这个按键被接到了STM8S207SB的PD7上,已做了上拉处理。
为了简单明了,还是点LED1吧。
按一下LED1亮,再按一下LED1灭。
好了,写程序吧。
#i nclude <iostm8s207sb.h>#define LED1_FLASH PD_ODR_ODR3 = !PD_ODR_ODR3 // 开发板上的LED1接在PD3上void GPIO_init(void){PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出PD_CR1 = 0x08; // 设置PD3为推挽输出PD_CR2 = 0x80; // 使能PD7外部中断}void EXTI_init(void){EXTI_CR1 = 0x80; // PD口下降沿触发中断}#pragma vector=0x02 // 这里很关键!看下面说明。
__interrupt void EXTI_PD7_TLI(void){LED1_FLASH;}void init_devices(void){asm("sim"); // 关全局中断GPIO_init();EXTI_init();asm("rim"); // 开全局中断}void main( void ){init_devices();// 主循环里没有程序需要执行while(1);}这里着重要说明的一点是PD7的外部中断程序。
看了一下芯片手册,PD口外部中断EXTI3的中断向量号是6,想当然,又是想当然,按IAR的规矩中断向量要加2,就这样写#pragma vector=0x08,结果就是按下按键,程序没响应了,一直在中断里不出来。
第6章 STM8中断控制系统
正因如此,ITC_SPR1寄存器的b1、b0对应TLI,即0号 中断,而不是复位中断RESET;同理,TC_SPR1寄存器的 b3、b2对应AWU,即1号中断,而不是软件中断TRAP; ITC_SPR8寄存器的b3、b2对应29号中断。即ITC_SPR8~ ITC_SPR1定义了30个中断源(编号为0~29,其中25~29中
向量地址 8000h 8004h 8008h 800Ch 8010h 8014h 8018h 801Ch 8020h 8024h 8028h 802Ch 8030h 8034h 8038h 803Ch 8040h 8044h 8048h 804Ch 8050h 8054h 8058h 805Ch 8060h 8064h 8068h 806Ch到 807Ch
● 不可屏蔽的中断:
RESET,TLI 和 TRAP
●
可屏蔽中断: 外部中源 不可屏蔽中断不会考虑CC寄存器的I1和I0的状态。仅仅当TRAP 中断发生时候将PC,X, Y, A 和 CC 寄存器的内容压栈。相应的向量载入到PC寄存 器中同时置位I1和I0位禁止中断(3级优先级)。 STM8S支持32个中断,中断服务程序入口地址称为中断向量,放在 8000H~807FH之间。每个中断向量占4个字节,共4x32(128字节)。中断服 务程序可放在16MB任一存储区。
断号保留,没有定义)的优先级,而ITC_SPR8寄存器的高4
位没有定义。
(4) 优先级10最低,分配给主程序使用。因此,不允许
将中断优先级设为10。如果将某一个中断优先级设为10, 为使对应中断请求得到响应,STM8 CPU将保留该中断源 先前的优先级。换句话说,当前中断优先级设置操作无效。 (5) 当两个或两个以上可屏蔽中断源具有相同的软件优 先级时,硬件查询顺序如表6-1所示,即1号中断(自动唤醒 中断AWU)优先级最高,CLK中断次之,而24号中断
STM8教程-第九章STM8S207中断系统解析
STM8S207共有9个复位源:
1、NRST引脚产生的外部复位
2、上电复位(POR)
3、掉电复位(BOR)
4、独立看门狗复位
5、窗口看门狗复位
6、软件复位
7、SWIM复位
8、非法操作码复位
9、EMS复位:当一些关键的寄存器被破坏或错误加载时产生的复位
所有的复位源最终都作用于NRST管脚,并在复位过程中保持低电平。复位入口向量在内存映射中位于固定的地址6000h。
9.1.2STM8S207单片机的中断
STM8S单片机的中断分为可屏蔽中断和不可屏蔽中断。
1、不可屏蔽中断
不可屏蔽中断包括软件中断、复位中断以及TLI中断,下面简要介绍常用的几个不可屏蔽中断。
(1)软件中断
TRAP实质上是条指令,但其执行过程与中断相同,即通过中断矢量确定目标地址,中断矢量是8004H~8007H。
本实例中关于LED灯的实现已经在前面章节中介绍过,本章介绍中断服务程序的编写。由中断矢量表可以查到TLI的中断号为0,而在IAR下加2就是2。
TLI中断编写顺序为:
初始化对应IO口中断模式,这里就是PD7口,通过CR1,CR2设置
初始化对应中断的方式,例如TLI就是EXTI_CR2的第三位,默认是0,也就是下降沿触发。
STM8S207默认的中断处理机制如下图所示:
9.2.2嵌套中断管理模式
在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3级时该模式就立即有效。
注意:在中断被响应时如果位I1和I0被修改,那么设备将作如下处理:如果一个中断X仍然处在悬起状态(新的中断或者中断标志没有被清除)同时该新的优先级又比先前的优先级高的话,那么该中断X会被重新响应。否则该中断的软件优先级在下一个中断请求( X中断的IRET之后)来之前保持不变。
基于STM8S207C8T6单片机的通断阀控制器设计
基于STM8S207C8T6单片机的通断阀控制器设计摘要:基于STM8S207C8T6单片机的通断阀控制器的控制方案,采用了YL-800N无线模块、STM8S207C8T6单片机、温度采集模块等技术,根据室内温度灵活的控制阀门状态,不仅为住户提供了恒定、舒适的室内温度、而且达到了智能化控制房间温度。
关键词:YL-800N无线模块;STM8S207C8T6单片机;通断阀控制器Abstract: Based on the STM8S207C8T6 single-chip on-off valve controller control program, using the YL-800N wireless module, STM8S207C8T6 microcontroller, temperature acquisition module technology, according to the indoor temperature flexible control valve status, not only for households to provide a constant, comfortable indoor temperature , And reached the intelligent control of the room temperature.Keywords: YL-800N wireless module; STM8S207C8T6 single-chip; on-off valve controlle我国城市沿用了60多年的以热电联产为主、区域锅炉房为辅的集中供暖方式,为我国的社会发展做出了巨大贡献,现在北方城市的主要供热模式还依然如此。
随着人们生活水平的提高,人们对于房间舒适度的意识普遍增强。
传统的集中直通式供暖已经达不到人们对房间舒适度的要求,我们提出了通断阀控制器配合房间温度采集来控制房间温度变换,从而解决达到房间温度的可控。
STM8教程-第六章 STM8S207 的外部电路
第六章STM8S207 的外部电路本章主要介绍STM8S207 的硬件连接方法。
由于STM8S207 是LQFP 封装的,一般需要打样板。
一般两层板就会满足所需,STM8S207 几乎可以单片运行。
6.1 STM8S207 开发板电路STM8S207 开发板实物图如下:在STM8S207 自带丰富的外设下,添加了不少实在而有用的外设,特别之处是USB下载以及串口的功能。
可以实现程序代码的下载以及与PC 机的UART 通信。
6.1.1 晶振电路STM8S207 可以选择三个时钟源,有内部高速RC 振荡器,提供16MHz 频率或者分频使用;内部RC 低速振荡器提供128KHz 频率方便低速外设时钟或者待机状态;外部晶振或者时钟驱动,最高可以高达24MHz。
为了显示出STM8S207 的最高性能,外部选择了24MHz 的无源晶振,方便程序选择时钟源。
6.1.2 复位电路复位引脚NRST 内部集成了弱上拉电阻RPU,即可作为输入,也可作为开漏输出。
一个在复位引脚上宽度最小为500ns 的低电平脉冲即可产生一个外部复位。
对于复位的检测是异步进行的,因此即使MCU 处于停机(Halt)模式,也有可能进入复位状态。
复位引脚也可以作为开漏输出用于对外部设备进行复位。
无论内部复位源是什么,一旦复位,内部复位电路都会产生一个至少脉宽为20us 的复位脉冲。
当没有外部复位发生时,内部弱上拉电阻可保证复位引脚处于高电平。
为了保证STM8S207 更好的性能,所以在原理图设计的时候还是外接了上拉电阻,NRST 内部电路如下图所示:我们采取的原理图为如下所示:6.1.3 电源电路STM8S207 开发板采用的是USB 供电,USB 可以提供500mA 的电流已经足够STM8S207 所有功能的实现。
在这里采用线性稳压芯片LM1117 3.3V,把USB 的供电分压为3.3V 供电给STM8S207 主控制芯片。
STM8 芯片有个特点是有4 组供电,分别是●VDD/VSS:主电源(3V 到5.5V)●VDDIO/VSSIO:I/O 口供电电源(3V 到5.5V)●VDDA/VSSA:模拟部分供电电源●VREF+/VREF-:ADC 参考电源为了更好的性能和稳定性,这里采用了电感作为隔离,更好防止各个电源之间的干扰,提高稳定性。
这一节,我们将向大家介绍如何使用 STM8 的外部输入中断
我们使用的是 D 口,所以只需要设置与 D 口有关的位,EXTI_CR1 中的第 6、7 位是设置 PD 口的中断方式。如下图所示:
我们的实验是设置为仅下降沿触发,所以在我们只需要设置为 EXTI_CR1 = 0x80 就可以了。
下面是软件代码的编写
#include "iostm8s207rb.h" #define LED1_FLASH PD_ODR_ODR0 #define LED2_FLASH PD_ODR_ODR1 #define LED3_FLASH PD_ODR_ODR2 #define LED4_FLASH PD_ODR_ODR3
下面我们将逐步讲解与外部中断有关的寄存器 1)CR1,CR2 这两个寄存器相信大家都很熟悉了,我们前面与 IO 口有关的操作都要到这两个寄存器, 之前我们设置的一般都是推挽式输出以及上拉式输入 在这里我们设置成中断上拉输入,因为我们的硬件上没有外接上拉,需要内部上拉,设 置对应位的寄存器值是 CR1 = 1 以及 CR2 = 0 2)EXTI_CR1
void main( void ) { init_devices(); // 主循环里没有程序需要执行 while(1); }
#pragma vector=0x02 // 这里很关键!看说明。 __interrupt void EXTI_PD7_TLI(void) { LED4_FLASH; }
#pragma vector=0x08 __interrupt void EXTI_PD(void) { if(PD_IDR_IDR5 == 0) //key1按下 { if(PD_IDR_IDR6 == 0) //key1 key2同时按下 LED3_FLASH; else LED1_FLASH; } else LED2_FLASH; }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六章STM8S207 的外部电路
本章主要介绍STM8S207 的硬件连接方法。
由于STM8S207 是LQFP 封装的,一般需要打样板。
一般两层板就会满足所需,STM8S207 几乎可以单片运行。
6.1 STM8S207 开发板电路
STM8S207 开发板实物图如下:
在STM8S207 自带丰富的外设下,添加了不少实在而有用的外设,特别之处是USB下载以及串口的功能。
可以实现程序代码的下载以及与PC 机的UART 通信。
6.1.1 晶振电路
STM8S207 可以选择三个时钟源,有内部高速RC 振荡器,提供16MHz 频率或者分频使用;内部RC 低速振荡器提供128KHz 频率方便低速外设时钟或者待机状态;外部晶振或者时钟驱动,最高可以高达24MHz。
为了显示出STM8S207 的最高性能,外部选择了24MHz 的无源晶振,方便程序选择时钟源。
6.1.2 复位电路
复位引脚NRST 内部集成了弱上拉电阻RPU,即可作为输入,也可作为开漏输出。
一个在复位引脚上宽度最小为500ns 的低电平脉冲即可产生一个外部复位。
对于复位的检测是异步进行的,因此即使MCU 处于停机(Halt)模式,也有可能进入复位状态。
复位引脚也可以作为开漏输出用于对外部设备进行复位。
无论内部复位源是什么,一旦复位,内部复位电路都会产生一个至少脉宽为20us 的复位脉冲。
当没有外部复位发生时,内部弱上拉电阻可保证复位引脚处于高电平。
为了保证STM8S207 更好的性能,所以在原理图设计的时候还是外接了上拉电阻,NRST 内部电路如下图所示:
我们采取的原理图为如下所示:
6.1.3 电源电路
STM8S207 开发板采用的是USB 供电,USB 可以提供500mA 的电流已经足够STM8S207 所有功能的实现。
在这里采用线性稳压芯片LM1117 3.3V,把USB 的供电分压为3.3V 供电给STM8S207 主控制芯片。
STM8 芯片有个特点是有4 组供电,分别是
●VDD/VSS:主电源(3V 到5.5V)
●VDDIO/VSSIO:I/O 口供电电源(3V 到5.5V)
●VDDA/VSSA:模拟部分供电电源
●VREF+/VREF-:ADC 参考电源
为了更好的性能和稳定性,这里采用了电感作为隔离,更好防止各个电源之间的干扰,提高稳定性。
6.1.4 UART 转USB
UART 可以直接采用Max232 等芯片,但是考虑到现在的电脑和手提主板都没有提供串口,所以直接转为USB 接口,方便使用。
这里使用了性价比最高的USB转串口芯片PL2303,方便用户下载程序和调试串口。
当使用为调试串口时,下载完用户程序后,复位后就可以直接使用串口调试功能了。
这是因为STM8 制定了大概1S 内没有ISP 下载时直接运行用户程序。
电路图如下所示:注意的是TXD 引脚要接上拉,这里为了方便观察数据流另加了一个LED 指示灯。
6.1.5 SWIM 接口
STM8S207 是支持SWIM 接口调试的,只是调试仿真器相对来说也是一个比较大的支
出,所以一般不建议购买,可以实现IAR 纯软件仿真
6.1.6 SD 卡电路
为了显示STM8S207 更优异的性能,配了SD 卡套接口,方便显示LCD 图片和文件操作。
具体电路如下所示:
6.1.7 LED
一块开发板不能缺少的功能就是LED,这是方便一开始使用学习的功能。
或者方便调试的时候用作指示灯。
这里配了 4 个独立LED,其中PD3 是TIM 的输出口,可以用LED3 演示PWM 调制LED 亮度的实验
6.1.8 按键
对于开发板来说,按键也是必不可少的,具体电路如下所示:
6.1.9 LCD
STM8S207 完全有能力驱动ili9320 控制TFT,这里配置了TFT 的接口。
6.1.10 AT24C02
不错,STM8S207 内部自带丰富的EEPROM,而且比AT24C02 更快的速度读写。
这里为什么配置AT24C02 是为了熟悉IIC 接口协议。
IIC 协议在单片机系统中非常常见,为此还是配置了AT24C02
电路如下:
6.1.11 W25X16
相对于AT24C02 来说,W25X16 是Flash 类型,更快的速度和更大的储存空间,而且更为重要的是这里使用了另一种非常常见的协议---SPI,所以在这里使用了W25X16 大容量Flash。
6.1.12 LM386 以及蜂鸣器
STM8S207 自带了一个BEEP 接口,可以根据程序选定1、2、4KHz 的频率输出。
而且BEEP 接口也是TIM 的一个通道,可以输出任意自定义的频率,从而输出音符。
为了更好的音色和更大的增益。
这里用了LM386 运放的选频放大电路,而且使用了无源蜂鸣器突出更好的音色。
6.1.13 光敏及热敏
STM8S207 拥有丰富的ADC 功能,所以这里使用了光敏电阻和热敏电阻分别作为AD 的输入而验证STM8S207 的ADC 功能。
6.2 本章小结
本章详细介绍了STM8S207 开发板的基本应用电路。
这些电路在嵌入式系统中经常使用到,读者也可以根据自己自身的实际需求,做必要的修改。