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版本的 ...
随机推荐
- C#知识点-反射
一.开发环境 操作系统:Win7 编译器:VS2010 .net版本:.net4.0 二.项目结构 三.开发流程 0.编写实体类 namespace ReflectDemo { public clas ...
- 2017-12-04HTML table布局
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Android开发: 关于性能需要考虑的
刚做Android开发时,只管完成任务,将需求完成,以能完成一款界面酷炫的app为自豪.然而,随着代码量的增加,越来越意识到,一款成功的移动端产品,光有酷炫的外衣还不够,还需要在各方面都优秀. 试想, ...
- outlook 2016 接收发送无法及时收下邮件,如何更改接收时间?
1. 单击“文件” > “选项” > “高级” > “发送和接收”,单击”发送/接收“ 2. 组“所有账户”的设置 > 打勾“安排自动发送/接收的时间间隔为(V)” 1 分钟 ...
- 【Python-2.7】删除空格
有时我们在编程过程中,需要去除字符串两边的空格,可以用如下函数解决问题: rstrip():去除字符串右边的空格: lstrip():去除字符串左边的空格: strip():去除字符串两边的空格. 示 ...
- HDU_2544_最短路
题意:第一个路口是起点,第n个(最后一个)路口是终点,问最短路径. 总结:第一个dijkstra. 代码: #include<iostream> #include<cstdio> ...
- MFC_2.2 编辑框和文本控件
编辑框和文本控件 1.拖控件 2.绑定变量.用户名密码编辑框控件类型.取名字.用户协议用值类型,默认CString. 设置属性.用户类型.选择mustiline TRUE. AOTO HScroll ...
- CSS:div/img水平垂直居中
div水平垂直居中方法一: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- Autowired和Resource的区别
Autowired是属于spring的注解,默认按类型装配,且依赖对象必须存在,如果允许为null,需要设置Autowired(required=false) Resource属于javax,默认 ...
- 06二叉树、Map、Collections、适配器
06二叉树.Map.Collections.适配器-2018/07/16 1.set集合,无索引,不可以重复,无序(存取不一致) 2.TreeSet用来对象元素进行排序,可以保证元素唯一 储存自定义对 ...