STM8S---IO复用配置(STVP方式)

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);
}
时间: 2024-08-02 01:36:26

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

STM8S---IO复用配置

1 说明 STM8S的IO复用用程序代码配置起来比较麻烦,一般是操作flash来操作option byte字节,配置寄存器更加麻烦,可以使用STM 标准外设驱动库来设置.本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置. 2 配置流程 [step1]打开STVP软件 [step2]打开我们需要下载的xxx.s19文件,CTRL+F5(File->Ram Exec) [step3]配置需要复用的引脚 IO口的复用功能主要配置在于AFR0-AFR7.这里我们配置定时器TIM2_CH

epoll实现IO复用,TCP通信

函数原型: 函数说明:该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它. 参数说明: fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符: 每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便:特别是对于socket连接比较多的情况下,在一定程度上可以提高处理的效率:这一点与select()函数不同,调用select()函数之后,select()函数会清空它所检测的socket描述

IO复用之——poll

一. 关于poll 对于IO复用模型,其优点无疑是免去了对一个个IO事件就绪的等待,转而代之的是同时对多个IO数据的检测,当检测等待的事件中至少有一个就绪的时候,就会返回告诉用户进程"已经有数据准备好了,快看看是哪个赶紧处理",而对于IO复用的实现,除了可以用select函数,另外一个函数仍然支持这种复用IO模型,就是poll函数: 二. poll函数的用法 虽然同样是对多个IO事件进行检测等待,但poll和select多少还是有些不同的: 函数参数中, 先来说nfds,这个是和sel

IO复用

IO复用简单介绍 IO复用使得程序能同一时候监听多个文件描写叙述符.这对提高程序的性能至关重要.通常.网络程序在下列情况下须要使用IO复用技术: client程序要同一时候处理多个socket. client程序要同一时候处理用户输入和网络连接. TCPserver同一时候处理监听socket和连接socket. server要同一时候处理TCP请求和UDP请求. 须要指出的是.IO复用尽管能同一时候监听多个文件描写叙述符,但它本身是堵塞的.而且当多个文件描写叙述符同一时候就绪时,假设不採取额外

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

I/O复用是Linux中的I/O模型之一.所谓I/O复用,指的是进程预先告诉内核,使得内核一旦发现进程指定的一个或多个I/O条件就绪,就通知进程进行处理,从而不会在单个I/O上导致阻塞. 在Linux中,提供了select.poll.epoll三类接口来实现I/O复用. select函数接口 select中主要就是一个select函数,用于监听指定事件的发生,原型如下: 12345 #include<sys/select.h>#include<sys/time.h>int sele

imx6中iomux IO复用

IOMUX Controller (IOMUXC) IO多路复用控制器1.overviewThe IOMUX Controller (IOMUXC), together with the IOMUX, enables the IC to share one pad to several functional blocks.IOMUXC和IOMUX使IMX6能够多个功能模块公用一个pad. 共用是通过对pad的输入/输出信号的多路复用技术来实现的.每一个模块需要一个特定的pad设置, 且对于每一个

IO复用之——select

一. select 前面提到Linux下的五种IO模型中有一个是IO复用模型,这种IO模型是可以调用一个特殊的函数同时监听多个IO事件,当多个IO事件中有至少一个就绪的时候,被调用的函数就会返回通知用户进程来处理已经ready事件的数据,这样通过同时等待IO事件来代替单一等待一个IO窗口数据的方式,可以大大提高系统的等待数据的效率:而接下来,就要讨论在Linux系统中提供的一个用来进行IO多路等待的函数--select: 二. select函数的用法 首先在使用select之前,要分清在IO事件

IO复用之——epoll

一. 关于epoll 对于IO复用模型,前面谈论过了关于select和poll函数的使用,select提供给用户一个关于存储事件的数据结构fd_set来统一监测等待事件的就绪,分为读.写和异常事件集:而poll则是用一个个的pollfd类型的结构体管理事件的文件描述符和事件所关心的events,并通过结构体里面的输出型参数revents来通知用户事件的就绪状态: 但是对于上述两种函数,都是需要用户遍历所有的事件集合来确定到底是哪一个或者是哪些事件已经就绪可以进行数据的处理了,因此当要处理等待的事

[Z] linux基础编程:IO模型:阻塞/非阻塞/IO复用 同步/异步 Select/Epoll/AIO

原文链接:http://blog.csdn.net/colzer/article/details/8169075 IO概念 Linux的内核将所有外部设备都可以看做一个文件来操作.那么我们对与外部设备的操作都可以看做对文件进行操作.我们对一个文件的读写,都通过调用内核提供的系统调用:内核给我们返回一个file descriptor(fd,文件描述符).而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符).描述符就是一个数字,指向内核中一个结构体(文件路径,数据