STM8S005 TIM1定时器PWM应用
STM8中的定时器1 是一个高级定时器,为什么说它是个高级定时器呢?因为它的功能比较多,其中就有一个是输出PWM的功能。我们可以直接掉用STM8官方的库函数来实现它的功能。
以上就是STM8定时器1的功能。我们这里只说 第三点 产生输出波形中的PWM功能。
和PWM相关的两个寄存器:
一个是TIM1_ARR负责PWM的频率,TIM1_CRRi负责输出PWM的占空比
定时器1的输出通道一共7个,通过STM8S005的管脚图上可以看到有CH1/CH2/CH3/CH4/CH1N/CH2N/CH3,也就是说PWM可以从芯片的7个管脚输出。
使用IAR软件,直接调用STM官方库定时器1PWM函数可以实现功能
#define CCR1_Val ((uint16_t)2047)
#define CCR2_Val ((uint16_t)1535)
#define CCR3_Val ((uint16_t)1023)
#define CCR4_Val ((uint16_t)511)
static void TIM1_Config(void);
void main(void)
{
/* TIM1 configuration -----------------------------------------*/
TIM1_Config();
while (1)
{
}
}
static void TIM1_Config(void)
{
TIM1_DeInit();
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 1040, 0); TIM1_OC2Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, CCR4_Val,TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET);
TIM1_Cmd(ENABLE);
TIM1_CtrlPWMOutputs(ENABLE);
}
编译后下载到STM8S005里面
上面是定时器1的配置。
首先是定时器1的初始化函数
TIM1_DeInit();
我们打开看下它写的什么内容
void TIM1_DeInit(void)
{
TIM1->CR1 = TIM1_CR1_RESET_VALUE;//
TIM1->CR2 = TIM1_CR2_RESET_VALUE;
TIM1->SMCR = TIM1_SMCR_RESET_VALUE;
TIM1->ETR = TIM1_ETR_RESET_VALUE;
TIM1->IER = TIM1_IER_RESET_VALUE;
TIM1->SR2 = TIM1_SR2_RESET_VALUE;
/* Disable channels */
TIM1->CCER1 = TIM1_CCER1_RESET_VALUE;
TIM1->CCER2 = TIM1_CCER2_RESET_VALUE;
/* Configure channels as inputs: it is necessary if lock level is equal to 2 or 3 */
TIM1->CCMR1 = 0x01;
TIM1->CCMR2 = 0x01;
TIM1->CCMR3 = 0x01;
TIM1->CCMR4 = 0x01;
/* Then reset channel registers: it also works if lock level is equal to 2 or 3 */
TIM1->CCER1 = TIM1_CCER1_RESET_VALUE;
TIM1->CCER2 = TIM1_CCER2_RESET_VALUE;
TIM1->CCMR1 = TIM1_CCMR1_RESET_VALUE;
TIM1->CCMR2 = TIM1_CCMR2_RESET_VALUE;
TIM1->CCMR3 = TIM1_CCMR3_RESET_VALUE;
TIM1->CCMR4 = TIM1_CCMR4_RESET_VALUE;
TIM1->CNTRH = TIM1_CNTRH_RESET_VALUE;
TIM1->CNTRL = TIM1_CNTRL_RESET_VALUE;
TIM1->PSCRH = TIM1_PSCRH_RESET_VALUE;
TIM1->PSCRL = TIM1_PSCRL_RESET_VALUE;
TIM1->ARRH = TIM1_ARRH_RESET_VALUE;
TIM1->ARRL = TIM1_ARRL_RESET_VALUE;
TIM1->CCR1H = TIM1_CCR1H_RESET_VALUE;
TIM1->CCR1L = TIM1_CCR1L_RESET_VALUE;
TIM1->CCR2H = TIM1_CCR2H_RESET_VALUE;
TIM1->CCR2L = TIM1_CCR2L_RESET_VALUE;
TIM1->CCR3H = TIM1_CCR3H_RESET_VALUE;
TIM1->CCR3L = TIM1_CCR3L_RESET_VALUE;
TIM1->CCR4H = TIM1_CCR4H_RESET_VALUE;
TIM1->CCR4L = TIM1_CCR4L_RESET_VALUE;
TIM1->OISR = TIM1_OISR_RESET_VALUE;
TIM1->EGR = 0x01; /* TIM1_EGR_UG */
TIM1->DTR = TIM1_DTR_RESET_VALUE;
TIM1->BKR = TIM1_BKR_RESET_VALUE;
TIM1->RCR = TIM1_RCR_RESET_VALUE;
TIM1->SR1 = TIM1_SR1_RESET_VALUE;
}
STM8S005 TIM1定时器PWM应用相关推荐
- STM32定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量
STM32 定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量 文章目录 STM32 定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量 编 ...
- 高级定时器TIM1输出PWM波
高级定时器(TIM1和TIM8)相较于通用定时器,它的函数配置更多,一个都不能少,否则输出不了PWM波,所以在此写下通用定时器和高级定时器PWM波配置的区别,以记录问题. 通用定时器TIM3通道1配置 ...
- STM32标准库函数之 TIM1定时器产生PWM波
/* 函数功能:定时器1通道1 4产生PWM波 函数参数:无 函数返回值:无 函数描述:无 */ void Dingshiqi1_PWM_Init(void) {TIM_TimeBaseInitTyp ...
- 【WB32库开发】第10章 TIM1高级定时器——PWM互补输出
在上一章的输出多路PWM的基础上,本章主要讲述如何配置WB32上的高级定时器TIM1完成PWM互补输出. 对PWM互补输出的概括放到10.3节中,请大家先跟随10.1节了解PWM互补输出如何配置,再结 ...
- STM32-通用定时器-PWM输出
1 通用定时器PWM概述 1.1 STM32定时器输出通道引脚 这里以TIM3为例来讲解.STM32的通用定时器分为TIM2.TIM3.TIM4.TIM5,而每个定时器都有独立的4个通道可以用来作为 ...
- stm32+定时器PWM波+电机驱动+直流电机
利用stm32单片机控制直流电机. 硬件部分:stm32f103c8t6.TB6612电机驱动模块.直流减速电机 首先搞明白原理.例如一个12v的直流电机,在其两端接上12v的电压,电机会满额转动,转 ...
- STM32F429第二十篇之高级定时器——PWM(OSSI,OSSR)
文章目录 前言 高级定时器 PWM模式 互补通道与刹车 重要寄存器 前言 从本文开始,介绍F429的高级时钟特性.本文主要介绍高级时钟的PWM功能的应用.关于PWM,本文重点介绍实现带有断路功能的双通 ...
- STM32F103C8 TIM1 CHN PWM输出代码
STM32F103高级定时器TIM1输出PWM波程序 /** 配置PB13输出,即全使能TIM1_CH1N通道,禁用TIM1_CH1通道,禁用更新中断* 其它参数看着修改*/ void Timer1I ...
- c语言tim1-smcr是什么意思,【整理】STM8使用TIM1测量PWM波 | 勤奋的小青蛙
一基本TIM1测量PWM波形原理 根据上图所示测量PWM的基本思想如下: 每个上升沿开始计数,监测到下降沿时记录下当前值为高电平时间,再检测到一个下降沿记录下当前值为周期,同时清零计数器开始测量下个周 ...
最新文章
- mysql 去掉日期.0_简单介绍MySQL数据库中日期中包含零值的问题
- Swift3.0语言教程使用编码创建和初始化字符串
- 打包成单独的HTML文件,【WEBPACK】分离css单独打包
- 学生计算机屏幕坏了怎么办,如果计算机显示器的屏幕坏了怎么办?
- C#中用HttpWebRequest/HttpWebResponse来发送/接收数据
- python中lt方法_Python的富比较方法__lt__、__gt__之间的关联关系分析
- CentOS---网络配置详解
- vue系列(1)安装vue
- VS2013 工具包修复记录
- mini usb 接口定义 5针usb接口定义图
- 基于simulink的模糊PID控制器设计与实现
- 安卓渗透测试工具——drozer安装使用教程
- 三种循环语句的详解和使用(for,while,do-while)
- 计算机结构体系:系统CPI计算例题(1.5)
- YALMIP建模+CPLEX求解,让优化问题更简单
- Intellij中格式化mapper.xml整齐
- Excel手机号如何查询实名认证?
- web 移动端开发基础
- 嵌入式硬件构件与底层驱动构件基本规范
- 第一话:今日播种,来日长成一棵Linux参天大树
热门文章
- deap遗传算法 tirads代码解读
- 普洱茶为什么是357克,普洱茶357克的由来
- 百分点10周年乔迁新址 数据智能服务更上一层楼
- ZooKeeper之zoo.cfg配置
- Pytorch线性模型初体验
- MagicDraw UML英文企业版12.5的中文字符显示问题
- WebSocket 托盘服务 NotifyIcon 通知栏 Windows Forms
- 【已解决】Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Mav
- DirectShow介绍和使用
- 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】