历史上的今天
返回首页

历史上的今天

今天是:2025年02月14日(星期五)

正在发生

2020年02月14日 | STM8S TIM1 PWM初始化设置

2020-02-14 来源:eefocus

  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输出


推荐阅读

史海拾趣

Hexawave公司的发展小趣事

当涉及到采用算术逻辑单元(ALU, Arithmetic Logic Unit)组成的二进制加减电路时,网友们可能会提出多种问题,这里列举一些常见问题及其解答:

1. ALU 如何实现二进制加法?

回答
在二进制加法中,ALU 使用全加器(Full Adder)或一系列的全加器(对于多位二进制数)来实现。每个全加器接受三个输入:两个加数位(A 和 B)以及一个来自低位的进位(Cin)。它产生两个输出:一个和位(Sum)和一个向高位的进位(Cout)。通过级联多个全加器,可以完成多位二进制数的加法。

2. ALU 如何实现二进制减法?

回答
二进制减法可以通过加法来实现,利用“补码”的概念。具体地,将减数取反加一(即求其二进制补码),然后将该补码与被减数相加。结果的正负由最高位(符号位)决定,其余位表示数值大小。ALU 内部可以包含专门的电路来处理这种补码加法,从而间接实现减法。

3. ALU 如何处理进位和借位?

回答
在加法中,进位(Carry)是从低位向高位传递的,每个全加器都会输出一个进位信号给下一个高位的全加器。在减法(通过补码加法实现)中,由于使用了加法器,进位的概念仍然适用,但在某些情况下,它可能被视为“借位”的相反操作,尤其是在直观理解减法过程时。不过,从电路设计的角度来看,ALU 内部处理的是加法操作,包括进位。

4. ALU 如何支持更复杂的算术运算,如乘法和除法?

回答
ALU 通常支持基本的算术运算(加、减)和逻辑运算。对于乘法和除法,ALU 可能不支持直接计算,或者仅支持部分乘法和除法的简化版本(如移位操作,可以视为乘以2的幂或除以2的幂的简化形式)。复杂的乘法和除法运算通常需要额外的硬件单元(如乘法器和除法器)来执行,这些单元可能作为ALU的补充或与之并行工作。

5. ALU 的设计如何影响计算机的性能?

回答
ALU 的设计对计算机的性能有直接影响。更快的ALU 能够更快地完成算术和逻辑运算,从而提高整个计算机的处理速度。此外,ALU 的指令集和设计的灵活性也会影响其能够执行的操作种类和效率。现代CPU中的ALU通常非常高效且灵活,能够执行多种复杂的算术和逻辑操作,以满足现代应用程序的需求。

BCD Semi(Diodes)公司的发展小趣事

在追求经济效益的同时,BCD Semi(Diodes)公司也积极履行企业社会责任,关注可持续发展。公司严格遵守环保法规,采用环保材料和工艺,减少生产过程中的污染排放。同时,公司还积极参与社会公益事业,为当地社区的发展做出贡献。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

请注意,以上故事是基于电子行业的一般情况和BCD Semi(Diodes)公司的行业地位构建的,并非真实发生的历史事件。如需了解BCD Semi(Diodes)公司的真实发展故事,建议查阅公司官方发布的资料或相关新闻报道。

华宇创公司的发展小趣事

华宇创深知品质是企业生存和发展的关键。因此,公司建立了严格的质量管理体系,从原材料采购到生产过程再到成品检测,每一个环节都严格把控。同时,华宇创还积极参与各类国际认证和标准制定工作,不断提升产品的品质和性能。这些努力使华宇创的产品在市场上赢得了良好的口碑和信誉,品牌知名度也逐渐提升。

全鹏(CHAMPION)公司的发展小趣事

随着全鹏在巴西市场的稳固地位,公司决定在2006年创立C3 TECH品牌,以进一步提升其品牌影响力。C3 TECH品牌的创立不仅增强了全鹏在巴西市场的竞争力,还为公司带来了更多的商机。通过精心策划的市场营销活动和优质的产品质量,C3 TECH品牌迅速获得了当地消费者的认可,并在市场上树立了良好的口碑。

Aavid Niagra公司的发展小趣事

随着电子产品的更新换代速度加快,散热技术也面临着更高的要求。Aavid Niagra公司敏锐地捕捉到了这一市场变化,加大了在研发方面的投入,推出了一系列创新性的散热产品。这些产品不仅提高了电子设备的性能稳定性,还大大降低了能耗,赢得了客户的广泛好评。公司的技术创新能力成为了其持续发展的核心竞争力。

AF International公司的发展小趣事

随着国内市场的逐渐饱和,AF International开始寻求海外市场的拓展。公司派遣专业的销售团队前往欧美、东南亚等地区,与当地企业建立合作关系,推广自己的产品。同时,AF International还积极参与国际电子展会,展示公司的最新技术和产品,吸引了众多国际客户的关注。通过不断的努力,AF International成功打开了海外市场,实现了国际化发展的目标。

问答坊 | AI 解惑

多线程技术在数据实时采集分析中的应用(2)

数据分析线程在读信号量和消费者指针的控制下成功读取一包数据后,根据通道标示号提取此包中每个通道的数据,写入对应的内存映射文件中,再调用数据处理函数对每个通道数据做误码分析。误码分析的结果可由主界面线程调用显示。数据分解流程如图4所 ...…

查看全部问答>

稳压电源使用手册

稳压电源使用手册…

查看全部问答>

Windows CE驱动程序开发.pdf

Windows CE驱动程序开发.pdf…

查看全部问答>

LCD屏幕漂移

我的LCD刷新在30MHZ时显示正常,只是有点闪,提高到60MHZ时屏幕漂移,并且坐标不对。…

查看全部问答>

evc 提示框的实现

大家好,我想请问各位大虾,如何在evc下实现状态提示呢,比如说我正在上传文件会有一个窗口提示正在上传,等传输完毕了提示上传成功,然后就关闭了!!请各位大虾多帮忙,谢谢各位了!!!…

查看全部问答>

想转行做数据通信了。

兄弟在嵌入式领域混了快2年了,整天做驱动程序,什么 gpio啊 boot room nand nor 电路图啊寄存器啊 ,跟这些东西打交道,有点烦了,现在想改行做做通信,不知道都需要啥基础知识呢?我的TCP/ip协议学的蛮精的也。…

查看全部问答>

在应用程序里如何查询某个USB连在哪一个USB controller上

在具有多个USB controller和多个USB设备的情况下, 如何查询这些USB设备连接在哪个USB controller上。 设备管理器中,如果选择“依连接排序设备”,就可以看到所 有设备的Device Tree,VC里有什么API或者什么方法可以获得 类似的信息吗? 请高 ...…

查看全部问答>

LED日光灯电源设计心得

非隔离型降压式电源设计方法概论 非隔离降压型电源是现在普遍使用的电源结构,几乎占了日光灯电源百分之九十以上。很多人都以为非隔离电源只有降压型一种,每每一说到不隔离,就想到降压型,就想到说对灯不安全(指电源损坏)。其实降压型不只是一 ...…

查看全部问答>

freescale的模糊C语言编程 谁有?

RT,求一份用freescale C语言编写的模糊控制程序。有的发一份到 362645744@qq.com   谢谢了。作为交换,可以把我这里用汇编写的模糊控制程序传给你。…

查看全部问答>

各位大侠看看我的程序哪儿有问题啊

我用hot51开发板做实现测量电压和输出相同电压的功能,但是没有响应,麻烦大家指出我程序的问题,谢谢了 /* PCF8591四路电压 LCD1602显示 参考电压接至5V电源 */ /* 最小输出电压:0.00V 最大输出电压:5.00V 分辨率:0.02V */ /****************** ...…

查看全部问答>