STM8S TIM1 PWM初始化设置

2020-02-14来源: eefocus关键字:STM8S  TIM1  PWM  初始化设置
  1. #define TIM1_DIV1 (uint16)(1-1)

  2. #define TIM1_DIV2 (uint16)(2-1)

  3. #define TIM1_DIV4 (uint16)(4-1)

  4. #define TIM1_DIV8 (uint16)(8-1)

  5. #define TIM1_DIV16 (uint16)(16-1)

  6. #define TIM1_DIV32 (uint16)(32-1)

  7. //timer1 PWM 输出到管脚使能

  8. _Bool   PWMAOUT_PINENBLE  @TIM1_CCER1:0 ;//TIM1_CH1 -- PC6

  9. _Bool   PWMBOUT_PINENBLE  @TIM1_CCER1:4 ;//TIM1_CH2 -- PC7

  10. _Bool   PWMCOUT_PINENBLE  @TIM1_CCER2:0 ;//TIM1_CH3 -- PC3

  11. // PWM 频率设定

  12. #define V_PWMFRE  1000

  13. #define ToCMPxH(CMP,Value) (CMP = (uint8)((Value >> 8 ) & 0xFF))

  14. #define ToCMPxL(CMP,Value) (CMP = (uint8)(Value & 0xFF))

  15. //*************************************

  16. // 函数名称:Init_Timer1_PWM

  17. // 函数功能:定时器1作PWM输出时初始化

  18. // 入口参数:PWM等级 每级0.625U (1000*0.625 = 62.5U = 8K)

  19. // 出口参数:无

  20. // 此初始化设置应用在BLDC 三相PWM输出

  21. //***************************************

  22. void Init_Timer1_PWM(uint16 Tcon,uint16 Pscr)

  23. {

  24. //16M系统时钟经预分频f=fck/(PSCR+1)  

  25. TIM1_PSCRH = (Pscr >> 8) & 0xff ;

  26. TIM1_PSCRL = Pscr & 0xff ;

  27. //设定重装载时的寄存器值,255是最大值

  28. TIM1_ARRH = (Tcon >> 8) & 0xff ;

  29. TIM1_ARRL = Tcon & 0xff ;

  30. //设置刹车寄存器

  31. TIM1_BKR|=0X80 ;

  32. //PWM1模式,TIM1_CNT

  33. TIM1_CCMR1 =0x6C ;

  34. //PWM1模式,TIM1_CNT

  35. TIM1_CCMR2 =0x6C ;

  36. //PWM1模式,TIM1_CNT

  37. TIM1_CCMR3 =0x6C ;

  38. //冻结模式,TIM1_CNT

  39. TIM1_CCMR4 =0x08 ;

  40. //PWM 占空比 清0

  41. TIM1_CCR1H = 0;

  42. TIM1_CCR1L = 0;

  43. TIM1_CCR2H = 0;

  44. TIM1_CCR2L = 0;

  45. TIM1_CCR3H = 0;

  46. TIM1_CCR3L = 0;

  47. TIM1_EGR = 0X01 ; //UG = 1 ;初始化计数器 预装载载入影子寄存器中

  48. TIM1_CNTRH = 0 ;  //计数器清0

  49. TIM1_CNTRL = 0 ;

  50. TIM1_CR1 |= 0X01;  // 计数器使能,开始计数

  51. }

  52. //*************************************

  53. // 函数名称:TOPWMVALUE

  54. // 函数功能:设置PWM占空比

  55. // 入口参数:占空比值

  56. // 出口参数:无

  57. //***************************************

  58. void TOPWMVALUE(uint16 OUT_PWM)

  59. {

  60. ToCMPxH(TIM1_CCR1H,OUT_PWM);

  61. ToCMPxL(TIM1_CCR1L,OUT_PWM);

  62. ToCMPxH(TIM1_CCR2H,OUT_PWM);

  63. ToCMPxL(TIM1_CCR2L,OUT_PWM);

  64. ToCMPxH(TIM1_CCR3H,OUT_PWM);

  65. ToCMPxL(TIM1_CCR3L,OUT_PWM);

  66. }

  67. //----实例应用------

  68. //定时器1初始化

  69. Init_Timer1_PWM(V_PWMFRE,TIM1_DIV2) ;//16M/2=8M   设置8K PWM输出


关键字:STM8S  TIM1  PWM  初始化设置 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488231.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 tim1 ch1 PWM输出
下一篇:stm8s103单片机输出PWM波程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8S库文件判断指定IO输入引脚电平GPIO_ReadInputPin有问题
/**  * @brief  Reads the specified GPIO input data pin.  * @param  GPIOx : Select the GPIO peripheral number (x = A to I).  * @param  GPIO_Pin : Specifies the pin number.  * @retval BitStatus : GPIO input pin status.  */BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_Ty
发表于 2020-02-08
使用STM8S105K4T6C 模数转换器的12通道
分享今天遇到的一个stm8s模数转换的小问题~~~这款单片机一共提供了7个模数转换通道,他们分别是AIN0-AIN5和AIN12。stm8s105k4t6c的管脚图其中AIN0-AIN5的配置和使用方法如下,配置为连续转换、扫描模式(代码写的不好,大神请见谅~):[mw_shl_code=c,true]/*---------------------------------包含头文件---------------------------------*/#include "adc.h" #define        ADC     
发表于 2020-02-08
MCU程序设计之STM8S的optionbytes
今天使用STM8S在程序中修改optionbyte遇到问题一直读取为0,不能进入设置流程,之前的程序今天重新修改东西,使用新的片子,原来程序如下:  AFR_TEMP = (uint16_t)((uint16_t)0x01 << 8);  AFR_TEMP = AFR_TEMP | (uint16_t)0xFE;  AFR_TEMP = (AFR_TEMP >> 8);之所以直接赋值而不调用函数,是因为程序代码空间有限,使用函数调用方法修改没有问题,如下:  AFR_TEMP = FLASH_ReadOptionByte(0X4803);  AFR_TEMP
发表于 2020-02-08
关于STM8S003F3P6开发的笔记
STM8S核心板 亮点:本开发板采用MicroUSB线取电,与智能手机数据线兼容,数据线简单易得,而非USB MINI线取电, USB MINI线不好找到,已经逐渐淘汰,这是本模块区别于其他的家产品的重要特点 。超低的价格,人性化的设计,全套的资料,让您省钱,省时,省力,省心!STM8S核心板 主要特点:1.使用STM8S003F3P6为主控IC。2.可以用板子上的2.54排针取电或是焊盘取电,使用焊盘取电时,输入电压范围在4.5V-15V,可同时通过排针向外部输出3.3V!注意:5V排针与模块的输入电源相连。3.引出所有引脚,引脚旁边标注出该引脚标号,带有复位按键,电源指示灯,和程序演示指示灯,麻雀虽小五脏俱全。4.支持SWIM
发表于 2020-02-07
关于STM8S003F3P6开发的笔记
使用STM8S003K3 ADC简介以及初始化
简介最近用stm8s003k3开发项目,用到了ADC模块,记录一下笔记也分享一下心得软件环境:STVD+COSMIC硬件环境:STM8S003K3 TSSOP20封装模块:ADC1.ADC功能以及框图由STM8S参考手册可以得到几个信息:1、有ADC1和ADC2两个(实际上得看封装,我这款只有ADC1)2、有多达16个输入通道(看封装,我这款只有2~6输入)3、有好几个扩展功能具体的功能如下所示*由框图可以看出ADC1和ADC2差别还是有一点的,一些多引脚的芯片中ADC2的带模拟参考正负极,在模拟放大中,可通过减小参考电压来提供更大的分辨率。由于没有用到所以不考虑*转换结束时可产生中断*f MASTER 可以被分频2 到18
发表于 2020-02-07
使用STM8S003K3 ADC简介以及初始化
STM8S使用外部时钟引起串口数据传输错误
最近有个小东西用到STM8S来驱动,之前用STM8S使用的是内部自带的16MHz RC时钟,尚未尝试过使用外部晶振作为主时钟。今天记录一下使用外部晶振时遇到的一个问题。老规矩,在进行程序设计时,首先初始化时钟,本次使用的是STM8S103F3P6芯片,8MHz的外部晶振,为了方便内外部时钟切换,结合资料写了两个切换函数/************************************************描述:采用内部16MHz的RC时钟为主时钟*      初始化时钟为1分频 16M,无外部晶振*版本:V1.0*作者
发表于 2020-02-07
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved