1 说明

STM8S的IO复用用程序代码配置起来比較麻烦。通常是操作flash来操作option byte字节。配置寄存器更加麻烦,能够使用STM 标准外设驱动库来设置。

本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置。 由于FLASH保存的数据是掉电不丢失的,先用STVP把Option Bytes擦写好后,再用STVD仿真器烧敲代码就可实现IO复用了。

  程序方式配置IO复用见这里

2 配置流程

【step1】打开STVP软件

【step2】打开我们须要下载的xxx.s19文件,CTRL+F5(File->Ram Exec)
【step3】配置须要复用的引脚

IO口的复用功能主要配置在于AFR0-AFR7。这里我们配置定时器TIM2_CH3通道的PWM输出管脚复用,默认是PD2为输出,将其配置成复用为PA3输出。如上图,在AFR1中的下拉菜单中选择PA3就可以。

【step4】下载程序到STM8S中。Progam->All tabs。这样就实现了IO复用配置。

3 測试程序

/*
TIM2_CH3 PWM
PD2 output
*/
#include <STM8S103F3P.h> void CLK_init(void)
{
CLK_ICKR |= 0X01; //使能内部快速时钟 HSI
CLK_CKDIVR |= 0x08; // 16M内部RC经2分频后系统时钟为8M
while(!(CLK_ICKR&0x02));//HSI准备就绪
CLK_SWR=0xe1; //HSI为主时钟源
} void Init_Tim2(void)
{
TIM2_CCMR3 |= 0X70; //设置定时器2三通道(PD2)输出比較三模式
TIM2_CCMR3 |= 0X04; //输出比較3预装载使能 TIM2_CCER2 |= 0x03; //通道3使能。低电平有效。配置为输出 // 初始化时钟分频器为1。即计数器的时钟频率为Fmaster=8M/64=0.125MHZ
TIM2_PSCR = 0X06;
//初始化自己主动装载寄存器。决定PWM 方波的频率,Fpwm=0.125M/62500=2HZ
TIM2_ARRH = 62500/256;
TIM2_ARRL = 62500%256;
//初始化比較寄存器,决定PWM 方波的占空比:5000/10000 = 50%
TIM2_CCR3H = 31250/256;
TIM2_CCR3L = 31250%256; // 启动计数;更新中断失能
TIM2_CR1 |= 0x81;
//TIM2_IER |= 0x00;
} void Init_GPIO(void)
{
/*设置为推挽输出,PD2接了LED灯*/
PD_DDR |= 0X04; //设置PD2port为输出模式
PD_CR1 |= 0X04; //设置PD2port为推挽输出模式
PD_CR2 &= 0XFD; PA_DDR |= 0X08; //设置PA3port为输出模式
PA_CR1 |= 0X08; //设置PA3port为推挽输出模式
PA_CR2 |= 0XF7;
} void main(void)
{
CLK_init();
Init_GPIO();
Init_Tim2();
while (1);
}

STM8S---IO复用配置(STVP方式)的更多相关文章

  1. IO复用三种方式

    简介 IO复用技术,简单来说就是同时监听多个描述符.在没有用到IO复用以前,只能是一个线程或一个 线程去监听,服务端同时有多个连接的时候,需要创建多个线程或者进程.而且,并不是所有的连 接是一直在传输 ...

  2. linux的IO复用,select机制理解--ongoing

    一:首先需要搞清楚IO复用.阻塞的概念: Ref:  https://blog.csdn.net/u010366748/article/details/50944516 二:select机制 作为IO ...

  3. STM8S---选项字节(Option Byte)写操作之IO复用

    功能实现目标   通过对选项字节的写操作来实现TIM2的CH3通道的PWM输出IO复用.能够设置为PA3或者PD2输出. 通过STVP方式操作链接 选项字节   选项字节包含芯片硬件特性的配置和存储器 ...

  4. 14.6.7 Configuring the Number of Background InnoDB IO Threads 配置InnoDB IO Threads的数量

    14.6.7 Configuring the Number of Background InnoDB IO Threads 配置InnoDB IO Threads的数量 InnoDB 使用后台线程来服 ...

  5. Linux中的IO复用接口简介(文件监视?)

    I/O复用是Linux中的I/O模型之一.所谓I/O复用,指的是进程预先告诉内核,使得内核一旦发现进程指定的一个或多个I/O条件就绪,就通知进程进行处理,从而不会在单个I/O上导致阻塞. 在Linux ...

  6. IO复用

    IO复用:使得程序能同时监听多个文件描述符 select: select在一段指定的时间内,监听用户感兴趣的文件描述符的 读.写.异常事件. select(int nfds,fd_set* readf ...

  7. IO复用(较详细)

    进程与线程的描述 一个进程至少会创建一个线程,多个线程共享一个程序进程的内存.程序的运行最终是靠线程来完成操作的.线程的数量跟CPU核数有关,一个核最多能发出两个线程.线程的操作主要分为:一:给CPU ...

  8. IO复用,AIO,BIO,NIO,同步,异步,阻塞和非阻塞 区别参考

    参考https://www.cnblogs.com/aspirant/p/6877350.html?utm_source=itdadao&utm_medium=referral IO复用,AI ...

  9. 迅为iTOP-4418/6818开发板-驱动-IO初始化配置介绍和例程

    对于所有的处理器,pad 一般可以分为两大类:IO(输入输出).Power(VDD 和GDD).类似摄像头 IO.以太网 IO.PWM 的 IO 等等,都可以统称为 IO.一个 IO,有可能能够被配置 ...

随机推荐

  1. Oracle多实例的配置方法

    SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME /dbhome_2) (PROGRAM ...

  2. 基于Qt的FreeType字体轮廓解析

    一.本文目的 以前的文档中.详细的介绍了FreeType开源字体引擎库的基础知识.基本用法.但并未详细的阐明在TurboCG中.是如何解析出一个文字的轮廓的,本文集中阐述.怎么样使用FreeType开 ...

  3. 【老鸟学算法】大整数乘法——算法思想及java实现

    算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...

  4. qingshow “不积跬步无以至千里,不积小流无以成江海”。--荀子《劝学篇》 用tomcat+花生壳搭建自己的web服务器+域名(参考)

    链接地址:http://www.blogjava.net/qingshow/archive/2010/01/17/309846.html 用tomcat搭建web服务器 目标:免费拥有自己的网站及域名 ...

  5. “/” 应用程序中的服务器错误 - IIS 发布错误

    解决方法, 将bin目录下的全部文件复制到iis下

  6. [置顶] Windows Phone后台音乐详解一

    应用于: Windows Phone 8 | Windows PhoneOS 7.1 你可以为winphone编写在后台播放音乐的app.这表示即使当用户点击返回或开始按钮离开你的应用界面时,你的应用 ...

  7. Java中int类型和tyte[]之间转换及byte[]合并

    JAVA基于位移的 int类型和tyte[]之间转换 [java] view plaincopy /** * 基于位移的int转化成byte[] * @param int number * @retu ...

  8. GDI+ Tutorial for Beginners

    原文 GDI+ Tutorial for Beginners GDI+ is next evolution of GDI. Using GDI objects in earlier versions ...

  9. MongoDB shell操作

    shell命令操作语法和JavaScript很类似,其实控制台底层的查询语句都是用JavaScript脚本完成操作的.使用shell 命令,需要启动mongo.exe. 常用shell命令如下: 1. ...

  10. 屏蔽EditText长按导致的弹出输入法的对话框

    做了个能手动拖动的EditText,但有个问题导致的体验很不好,就是手放上去开始拖,拖到一段距离后弹出个输入法的对话框,这根本不是我想要的效果,于是就想屏蔽它,结果在网上找到一句代码,放上去 顿时解决 ...