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_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;     //设置PD2端口为输出模式
 PD_CR1 |= 0X04;     //设置PD2端口为推挽输出模式
 PD_CR2 &= 0XFD;

 PA_DDR |= 0X08;     //设置PA3端口为输出模式
 PA_CR1 |= 0X08;     //设置PA3端口为推挽输出模式
 PA_CR2 |= 0XF7;
}

void main(void)
{
 CLK_init();
 Init_GPIO();
 Init_Tim2();
 while (1);
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 13:52:36

STM8S---IO复用配置的相关文章

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

1 说明 STM8S的IO复用用程序代码配置起来比較麻烦.通常是操作flash来操作option byte字节.配置寄存器更加麻烦,能够使用STM 标准外设驱动库来设置. 本文使用一种界面配置的方式来配置IO复用管脚,即使用STVP来配置. 由于FLASH保存的数据是掉电不丢失的,先用STVP把Option Bytes擦写好后,再用STVD仿真器烧敲代码就可实现IO复用了. ??程序方式配置IO复用见这里 2 配置流程 [step1]打开STVP软件 [step2]打开我们须要下载的xxx.s1

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设置, 且对于每一个

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

《深入理解计算机系统》Tiny服务器4——epoll类型IO复用版Tiny

前几篇博客分别讲了基于多进程.select类型的IO复用.poll类型的IO复用以及多线程版本的Tiny服务器模型,并给出了主要的代码.至于剩下的epoll类型的IO复用版,本来打算草草带过,毕竟和其他两种IO复用模型差不太多.但今天在看Michael Kerrisk的<Linux/UNIX系统编程手册>时,看到了一章专门用来讲解epoll函数,及其IO复用模型.于是,自己也就动手把Tiny改版了一下.感兴趣的同学可以参考上述手册的下册1113页,有对于epoll比较详细的讲解. 前边针对IO

IO复用

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

Libevent的IO复用技术和定时事件原理

Libevent 是一个用C语言编写的.轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大:源代码相当精炼.易读:跨平台,支持 Windows. Linux. *BSD 和 Mac Os:支持多种 I/O 多路复用技术, epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O,定时器和信号等事件:注册事件优先级. 1 Libevent中的epoll Libevent重

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

IO复用之——select

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