1. //主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵
  2.  
  3. //呵,这个PWM设置刚開始用还是有点麻烦,由于是自己摸索。花点时间。还是解决了
  4.  

  5. //所用子函数都是调用STM8S的库函数stm8s_tim.c 中的。
  6.  
  7. 宏定义:
  8. //分频宏
  9. //计数器的时钟频率(fCK_CNT)等于fCK_PSC/( PSCR[15:0]+1)。
  10. #define TIM1_PRESCALER_1 ((u16)0x00)
  11. #define TIM1_PRESCALER_2 ((u16)0x01)
  12. #define TIM1_PRESCALER_3 ((u16)0x02)
  13. #define TIM1_PRESCALER_4 ((u16)0x03)
  14. #define TIM1_PRESCALER_5 ((u16)0x04)
  15.  
  16. // PWM 频率设定
  17. #define MDIV2
  18. //16M 2分频的设置
  19. #if defined(MDIV2)
  20. #define TIM1_DIV_SET TIM1_DIV2
  21. #define PWMFRE_8KHZ 1000//主频率 16M/2=8M 1/8K=1/8M*1000 周期 0.125us
  22. #define PWMFRE_4KHZ 2000
  23. #define PWMFRE_2KHZ 4000
  24. #define PWMFRE_1KHZ 8000
  25. #define PWMFRE_05KHZ 16000
  26. #define PWMFRE_025KHZ 32000
  27. #define PWMFRE_020KHZ 40000//200HZ 周期5000us /0.125 =40000
  28. #define PWMFRE_38KHZ 210//用于红外38KHZ载波
  29. #define PWMFRE_OPEN 70//1/3的PWM占空比
  30. #else
  31. //16M 不分频的设置
  32. #define TIM1_DIV_SET TIM1_DIV1
  33. #define PWMFRE_8KHZ 2000
  34. //1/8K=1/16M*2000
  35. #define PWMFRE_4KHZ 4000
  36. #define PWMFRE_2KHZ 8000
  37. #define PWMFRE_1KHZ 16000
  38. #define PWMFRE_05KHZ 32000
  39. #define PWMFRE_025kHZ 64000
  40. #define PWMFRE_38KHZ 421//用于红外38KHZ载波
  41. #define PWMFRE_OPEN 140//1/3的PWM占空比
  42. #endif
  43. //初始化调用:
  44.  
  45. TIM1_PrescalerConfig(TIM1_PRESCALER_2,TIM1_PSCRELOADMODE_IMMEDIATE);
  46. //1分频即不分配 同意事件更新
  47. TIM1_OC2Init
  48.  
  49. (TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,
  50. 0,TIM1_OCPOLARITY_LOW,TIM1_OCNPOLARITY_HIGH,
  51. TIM1_OCIDLESTATE_SET,TIM1_OCNIDLESTATE_SET);
  52. //PWM1模式
  53.  
  54. TIM1_CounterModeConfig(TIM1_COUNTERMODE_UP);//向上计数模式
  55. TIM1_ARRPreloadConfig(ENABLE);//又一次预装载使能
  56. TIM1_OC2PreloadConfig(ENABLE);//比較器2预状态使能
  57.  
  58. TIM1_SetCounter(0);//初始化计数值
  59. TIM1_SetAutoreload(PWMFRE_020KHZ);//0.125us周期 40*0.125=5us 200khz 周期
  60.  
  61. 5us 5/0.125
  62. TIM1_SetCompare2(0);//占空比值
  63.  
  64. TIM1_CtrlPWMOutputs(ENABLE);//PWM控制使能
  65. TIM1_Cmd(ENABLE);//使能TIM1计数
  66. TIM1_CCxNCmd(TIM1_CHANNEL_2,ENABLE);//第二通道 输出使能
  67.  
  68. //主程序调用(10ms运行1次):
  69.  
  70. //更改占空比
  71.  
  72. if(F_ADD)
  73. {
  74. PWMVal += 100;
  75. if( PWMVal >= 2000)
  76. {
  77.  
  78. F_ADD = 0;
  79.  
  80. }
  81. }
  82. else
  83. {
  84. PWMVal -= 100;
  85. if( PWMVal <= 100)
  86. {
  87.  
  88. F_ADD = 1;
  89.  
  90. }
  91. }
  92. 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. git 删除分支如何恢复

    强制删除了一个分支而后又想重新使用这个分支,该怎么找回该分支上的代码呢? 一:问题描述: 今天师父说上线几个功能,让我把开发的分支推送到远程.当打开git就傻眼了,之前开发好的分支被我删除了,就连推送 ...

  2. js技巧(三)

    1.检测浏览器,search的用法 if(window.navigator.userAgent.search(/firefox/i)!=-1){ alert('ff'); } else if(wind ...

  3. 基于C++的多态性动态判断函数

    这里先有一个问题: 问题描述:函数int getVertexCount(Shape * b)计算b的顶点数目,若b指向Shape类型,返回值为0:若b指向Triangle类型,返回值为3:若b指向Re ...

  4. 编写Java脚本统计工程代码总行数

    在新公司工作将近一年了,一直独自一人负责服务端集群的运维和代码的编写.不知不觉从一个Project发展到了七八个Project. 看着越来越多的代码,今天突然想统计一下一共写了多少代码.[这里只统计完 ...

  5. Bootstrap Datatable 简单的基本配置

    $(document).ready(function() {     $('#example').dataTable({ "sScrollX": "100%", ...

  6. std list/vector sort 自定义类的排序就是这么简单

    所以,自己研究了一下,如下:三种方式都可以,如重写<,()和写比较函数compare_index.但是要注意对象和对象指针的排序区别. 1.容器中是对象时,用操作符<或者比较函数,比较函数 ...

  7. 梦想CAD控件关于标注的系统变量说明

    主要用到函数说明: IMxDrawDimension::SetDimVarDouble 设置标注属性的实数类型变量值,详细说明如下: 参数 说明 [in] LONG iType 该属性的类形值 dVa ...

  8. 打造个人的vimIDE

    环境说明 系统版本:centos7.Ubuntu16 vim版本:7.4 安装git工具 整体说明:本文的vim配置是针对Linux的单个系统用户,python的自动补全使用的是 jedi-vim 插 ...

  9. 有关bash,我希望我能知晓的十件事

    简介 我之前的一篇文章比我预想的更受欢迎,因此我想再写一篇文章来介绍一些不太知名的bash功能 正如之前所言,由于我觉得bash是一种要经常使用(且需理解)的技术,所以我在研究bash时写了一本书.虽 ...

  10. 判断机型是否为iphoneX

    判断机型是否为iphoneX isIPhoneX() {                 var u = navigator.userAgent;                 var isIOS ...