//主功能接受:使用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 应用 呼吸灯的更多相关文章

  1. 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯

    实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...

  2. ZYNQ自定义AXI总线IP应用——PWM实现呼吸灯效果

    一.前言 在实时性要求较高的场合中,CPU软件执行的方式显然不能满足需求,这时需要硬件逻辑实现部分功能.要想使自定义IP核被CPU访问,就必须带有总线接口.ZYNQ采用AXI BUS实现PS和PL之间 ...

  3. 使用pwm进行呼吸灯的设计

    本文源码已经上传至csdn: 程序源码如下; #define LEDC_IO_0 (2) esp_err_t app_main() { ledc_timer_config_t ledc_timer = ...

  4. 【iCore3 双核心板】例程八:定时器PWM实验——呼吸灯

    实验指导书及代码包下载: http://pan.baidu.com/s/1dEnH5dB iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  5. PWM(脉宽调制)——LED特效呼吸灯设计

    简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域 ...

  6. STM8S003F3通过PWM波实现三基色呼吸灯(转)

    源: STM8S003F3通过PWM波实现三基色呼吸灯

  7. 浅浅的分析LED呼吸灯的实现和PWM的关系

    前言 在本周,我们在python课上做了一个实验,用ARDUINO使小LED灯模仿出呼吸灯的效果,实验进行的很成功,但是机器当仅输出高/低电平的时候是怎么样才能做到渐亮渐暗(输出电压)的变化呢?在这里 ...

  8. [FPGA]Verilog利用PWM调制巧妙完成RGB三色彩虹呼吸灯(给简约的题目以美妙的解答)

    概述 实现彩虹呼吸灯 题目就是这么简短,但这是目前我碰到的最有意思的一道题目,因为他有无数种解决方法,并且每一种都是那么高级或者巧妙,比如 可以利用3路不同初相的PWM调制信号驱动三颗RGB灯重叠呼吸 ...

  9. 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯

    https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...

随机推荐

  1. const学习(续)

    续接上一篇<C++ const学习> const与成员函数 之前说到了const修饰成员函数本身. const成员函数不能修改对象成员值 对于const或者费const对象都可以调用con ...

  2. PMBOK项目管理九大知识领域和五大流程 --美国IT项目管理硕士笔记(二)

    PMBOK 项目管理 九大知识领域和五大流程 PMI   Project Management Institute.PMI 是世界上最大的非盈利机构,是项目管理领域的领导者.PMI制定项目管理行业标准 ...

  3. 百度人脸识别AI实践.doc

    0, 前言 百度开放了很多AI能力,其中人脸识别就是其中之一. 本文对百度人脸识别AI进行实践检验,看看其使用效果如何. 鉴于是最为基础的实践,基本都是在其接口范例代码修改而来. 百度人脸识别AI网站 ...

  4. (转)淘淘商城系列——商品搜索功能Dao实现

    http://blog.csdn.net/yerenyuan_pku/article/details/72909286 终于进入商品搜索功能的开发中了,本文我来教大家编写实现商品搜索功能的Dao层代码 ...

  5. js获取图片信息(一)-----获取图片的原始尺寸

    如何获取图片的原始尺寸大小? 如下,当给 img 设置一个固定的大小时,要怎样获取图片的原始尺寸呢? #oImg{ width: 100px; height: 100px; } <img src ...

  6. ThinkPHP---TP功能类之分页

    (1)核心 数据分页通过limit语法实现 (2)分页类 ThinkPHP里系统封装好了分页类:Page.class.php (3)代码分析 位置:Think/Page.class.php, ①查看相 ...

  7. java8 foreach不能使用break、countinue

    在学习1.8新特性的过程中,发现foreach中不可以使用break和countinue,然后我使用了return,结果如下图,对循环并没有影响. 百度一下,发现了一个不一样的回答 然后我就看了下源码 ...

  8. python多进程和多线程编程

    17 多线程和多进程并发 The modules described in this chapter provide support for concurrent execution of code. ...

  9. 洛谷——P1475 控制公司 Controlling Companies

    P1475 控制公司 Controlling Companies 题目描述 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分.(此处略去一句废话)据说,如果至少满足了以下三个条 ...

  10. Python学习-算术运算符,赋值运算符和复合运算符

    算术运算符 常见的算术运算符有 : +     加法运算符 print(1 + 2); // 3 print('1' + '2'); //12 不仅可以进行2个数字的相加,还可以连接2个字符串 -   ...