STM8S PWM 应用 呼吸灯
- //主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵
- //呵,这个PWM设置刚開始用还是有点麻烦,由于是自己摸索。花点时间。还是解决了
- 。
- //所用子函数都是调用STM8S的库函数stm8s_tim.c 中的。
- 宏定义:
- //分频宏
- //计数器的时钟频率(fCK_CNT)等于fCK_PSC/( PSCR[15:0]+1)。
- #define TIM1_PRESCALER_1 ((u16)0x00)
- #define TIM1_PRESCALER_2 ((u16)0x01)
- #define TIM1_PRESCALER_3 ((u16)0x02)
- #define TIM1_PRESCALER_4 ((u16)0x03)
- #define TIM1_PRESCALER_5 ((u16)0x04)
- // PWM 频率设定
- #define MDIV2
- //16M 2分频的设置
- #if defined(MDIV2)
- #define TIM1_DIV_SET TIM1_DIV2
- #define PWMFRE_8KHZ 1000//主频率 16M/2=8M 1/8K=1/8M*1000 周期 0.125us
- #define PWMFRE_4KHZ 2000
- #define PWMFRE_2KHZ 4000
- #define PWMFRE_1KHZ 8000
- #define PWMFRE_05KHZ 16000
- #define PWMFRE_025KHZ 32000
- #define PWMFRE_020KHZ 40000//200HZ 周期5000us /0.125 =40000
- #define PWMFRE_38KHZ 210//用于红外38KHZ载波
- #define PWMFRE_OPEN 70//1/3的PWM占空比
- #else
- //16M 不分频的设置
- #define TIM1_DIV_SET TIM1_DIV1
- #define PWMFRE_8KHZ 2000
- //1/8K=1/16M*2000
- #define PWMFRE_4KHZ 4000
- #define PWMFRE_2KHZ 8000
- #define PWMFRE_1KHZ 16000
- #define PWMFRE_05KHZ 32000
- #define PWMFRE_025kHZ 64000
- #define PWMFRE_38KHZ 421//用于红外38KHZ载波
- #define PWMFRE_OPEN 140//1/3的PWM占空比
- #endif
- //初始化调用:
- TIM1_PrescalerConfig(TIM1_PRESCALER_2,TIM1_PSCRELOADMODE_IMMEDIATE);
- //1分频即不分配 同意事件更新
- TIM1_OC2Init
- (TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,
- 0,TIM1_OCPOLARITY_LOW,TIM1_OCNPOLARITY_HIGH,
- TIM1_OCIDLESTATE_SET,TIM1_OCNIDLESTATE_SET);
- //PWM1模式
- TIM1_CounterModeConfig(TIM1_COUNTERMODE_UP);//向上计数模式
- TIM1_ARRPreloadConfig(ENABLE);//又一次预装载使能
- TIM1_OC2PreloadConfig(ENABLE);//比較器2预状态使能
- TIM1_SetCounter(0);//初始化计数值
- TIM1_SetAutoreload(PWMFRE_020KHZ);//0.125us周期 40*0.125=5us 200khz 周期
- 是5us 5/0.125
- TIM1_SetCompare2(0);//占空比值
- TIM1_CtrlPWMOutputs(ENABLE);//PWM控制使能
- TIM1_Cmd(ENABLE);//使能TIM1计数
- TIM1_CCxNCmd(TIM1_CHANNEL_2,ENABLE);//第二通道 输出使能
- //主程序调用(10ms运行1次):
- //更改占空比
- if(F_ADD)
- {
- PWMVal += 100;
- if( PWMVal >= 2000)
- {
- F_ADD = 0;
- }
- }
- else
- {
- PWMVal -= 100;
- if( PWMVal <= 100)
- {
- F_ADD = 1;
- }
- }
- TIM1_SetCompare2(PWMVal);
STM8S PWM 应用 呼吸灯的更多相关文章
- 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯
实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...
- ZYNQ自定义AXI总线IP应用——PWM实现呼吸灯效果
一.前言 在实时性要求较高的场合中,CPU软件执行的方式显然不能满足需求,这时需要硬件逻辑实现部分功能.要想使自定义IP核被CPU访问,就必须带有总线接口.ZYNQ采用AXI BUS实现PS和PL之间 ...
- 使用pwm进行呼吸灯的设计
本文源码已经上传至csdn: 程序源码如下; #define LEDC_IO_0 (2) esp_err_t app_main() { ledc_timer_config_t ledc_timer = ...
- 【iCore3 双核心板】例程八:定时器PWM实验——呼吸灯
实验指导书及代码包下载: http://pan.baidu.com/s/1dEnH5dB iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- PWM(脉宽调制)——LED特效呼吸灯设计
简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域 ...
- STM8S003F3通过PWM波实现三基色呼吸灯(转)
源: STM8S003F3通过PWM波实现三基色呼吸灯
- 浅浅的分析LED呼吸灯的实现和PWM的关系
前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸灯的效果,实验进行的很成功,但是机器当仅输出高/低电平的时候是怎么样才能做到渐亮渐暗(输出电压)的变化呢?在这里 ...
- [FPGA]Verilog利用PWM调制巧妙完成RGB三色彩虹呼吸灯(给简约的题目以美妙的解答)
概述 实现彩虹呼吸灯 题目就是这么简短,但这是目前我碰到的最有意思的一道题目,因为他有无数种解决方法,并且每一种都是那么高级或者巧妙,比如 可以利用3路不同初相的PWM调制信号驱动三颗RGB灯重叠呼吸 ...
- 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯
https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...
随机推荐
- git 删除分支如何恢复
强制删除了一个分支而后又想重新使用这个分支,该怎么找回该分支上的代码呢? 一:问题描述: 今天师父说上线几个功能,让我把开发的分支推送到远程.当打开git就傻眼了,之前开发好的分支被我删除了,就连推送 ...
- js技巧(三)
1.检测浏览器,search的用法 if(window.navigator.userAgent.search(/firefox/i)!=-1){ alert('ff'); } else if(wind ...
- 基于C++的多态性动态判断函数
这里先有一个问题: 问题描述:函数int getVertexCount(Shape * b)计算b的顶点数目,若b指向Shape类型,返回值为0:若b指向Triangle类型,返回值为3:若b指向Re ...
- 编写Java脚本统计工程代码总行数
在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写.不知不觉从一个Project发展到了七八个Project. 看着越来越多的代码,今天突然想统计一下一共写了多少代码.[这里只统计完 ...
- Bootstrap Datatable 简单的基本配置
$(document).ready(function() { $('#example').dataTable({ "sScrollX": "100%", ...
- std list/vector sort 自定义类的排序就是这么简单
所以,自己研究了一下,如下:三种方式都可以,如重写<,()和写比较函数compare_index.但是要注意对象和对象指针的排序区别. 1.容器中是对象时,用操作符<或者比较函数,比较函数 ...
- 梦想CAD控件关于标注的系统变量说明
主要用到函数说明: IMxDrawDimension::SetDimVarDouble 设置标注属性的实数类型变量值,详细说明如下: 参数 说明 [in] LONG iType 该属性的类形值 dVa ...
- 打造个人的vimIDE
环境说明 系统版本:centos7.Ubuntu16 vim版本:7.4 安装git工具 整体说明:本文的vim配置是针对Linux的单个系统用户,python的自动补全使用的是 jedi-vim 插 ...
- 有关bash,我希望我能知晓的十件事
简介 我之前的一篇文章比我预想的更受欢迎,因此我想再写一篇文章来介绍一些不太知名的bash功能 正如之前所言,由于我觉得bash是一种要经常使用(且需理解)的技术,所以我在研究bash时写了一本书.虽 ...
- 判断机型是否为iphoneX
判断机型是否为iphoneX isIPhoneX() { var u = navigator.userAgent; var isIOS ...