@国学芯用,STC8H1K16能输出任意周期和任意占空比的波形吗?
原来使用STC1K08PWM芯片,LQFP32封装。17年STC8A推出后,可惜没有小封装的。最近看到STC8H1K16,研究了几天的DATASHEET,就是无法实现任意周期和任意
占空比的波形输出,不知道是我太笨,还是这个芯片无法实现这个功能。
版主能否放个例程出来?
附STC8A的相关例程:
void main()
{
P_SW2 = 0x80;
PWMCKS = 0x00; // PWM时钟为系统时钟
PWMC = 0x1
000; //设置PWM周期为1000H个PWM时钟
PWM0T1= 0x0100; //在计数值为100H地方输出低电平
PWM0T2= 0x0500; //在计数值为500H地方输出高电平
PWM0CR= 0x80; //使能PWM0输出
P_SW2 = 0x00;
PWMCR = 0x80; //启动PWM模块
while (1);
} STC8H的“高级PWM”看起来很强大,可惜目前用不上,就不当小白鼠了。{:sweat:} 肯定不能 来,给我输出0.0000000000001ns周期,0.000000000000001占空比的PWM波形 也在啃寄存器的。沟通一下。 看来只有等STC8A出小封装的了。郁闷中。。。。{:shocked:} 这个任意是否要求太高了。要多少位可调、达到什么精度这才是具体数据呀
此所谓“希望越大,失望越大”。等了2年,结果等到个“高级PWM”这个废物。
STC丢掉自己的优势,非要学别人的鸡肋,真的无语了。
我宁愿STC8H完善好“增强PWM",10位ADC,8位串口通信。稳定可靠是最为重要的。
至于IIC,SPI,我都是用软件模拟的,不关心这类BUG.
向STC道歉,收回上面的过激言论。
STC8H的高级PWM还是可以实现我需要的脉冲波形的,虽然配置上麻烦一点。
STC8H取消了PCA模块,仅仅有10位ADC,稳定性上应该不会太差。下周就向STC申请样片测试。 楼主测试怎么样了?我搞了一下,没有成功,等批量了,看看例程再搞吧。 STC8H的高级PWM功能测试OK!完美实现我要的波形。
datasheet写的不错。如果有STM32的PWM使用经验的话,更容易上手。
难怪 用过nxp 用过Ti用过nuvoton 就是没有 su33691 发表于 2019-1-8 14:34
STC8H的高级PWM功能测试OK!完美实现我要的波形。
datasheet写的不错。如果有STM32的PWM使用经验的话,更容 ...
楼主,独乐乐不如众乐乐,贴一个参考代码,学习一下。 su33691 发表于 2019-1-8 14:34
STC8H的高级PWM功能测试OK!完美实现我要的波形。
datasheet写的不错。如果有STM32的PWM使用经验的话,更容 ...
请教什么波形? 贴上我整理的STC高级PWM相关寄存器的设置:
不保证完全正确,仅供参考
//如下特殊功能寄存器位于扩展RAM区域
//访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写
#define PWM2_PSCR (*(unsigned intvolatile xdata *)0xfef0)
#define PWM2_PSCRH (*(unsigned char volatile xdata *)0xfef0)
#define PWM2_PSCRL (*(unsigned char volatile xdata *)0xfef1)
#define PWM2_ARR (*(unsigned intvolatile xdata *)0xfef2)
#define PWM2_ARRH (*(unsigned char volatile xdata *)0xfef2)
#define PWM2_ARRL (*(unsigned char volatile xdata *)0xfef3)
#define PWM2_RCR (*(unsigned char volatile xdata *)0xfef4)
#define PWM2_CCR1 (*(unsigned intvolatile xdata *)0xfef5)
#define PWM2_CCR1H (*(unsigned char volatile xdata *)0xfef5)
#define PWM2_CCR1L (*(unsigned char volatile xdata *)0xfef6)
#define PWM2_CCR2 (*(unsigned intvolatile xdata *)0xfef7)
#define PWM2_CCR2H (*(unsigned char volatile xdata *)0xfef7)
#define PWM2_CCR2L (*(unsigned char volatile xdata *)0xfef8)
#define PWM2_CCR3 (*(unsigned intvolatile xdata *)0xfef9)
#define PWM2_CCR3H (*(unsigned char volatile xdata *)0xfef9)
#define PWM2_CCR3L (*(unsigned char volatile xdata *)0xfefa)
#define PWM2_CCR4 (*(unsigned intvolatile xdata *)0xfefb)
#define PWM2_CCR4H (*(unsigned char volatile xdata *)0xfefb)
#define PWM2_CCR4L (*(unsigned char volatile xdata *)0xfefc)
#define PWM2_BKR (*(unsigned char volatile xdata *)0xfefd)
#define PWM2_DTR (*(unsigned char volatile xdata *)0xfefe)
#define PWM2_OISR (*(unsigned char volatile xdata *)0xfeff)
#define PWM1_ETRPS (*(unsigned char volatile xdata *)0xfeb0)
#define PWM1_ENO (*(unsigned char volatile xdata *)0xfeb1)
#define PWM1_PS (*(unsigned char volatile xdata *)0xfeb2)
#define PWM1_IOAUX (*(unsigned char volatile xdata *)0xfeb3)
#define PWM2_ETRPS (*(unsigned char volatile xdata *)0xfeb4)
#define PWM2_ENO (*(unsigned char volatile xdata *)0xfeb5)
#define PWM2_PS (*(unsigned char volatile xdata *)0xfef6)
#define PWM2_IOAUX (*(unsigned char volatile xdata *)0xfef7)
#define PWM1_CR1 (*(unsigned char volatile xdata *)0xfec0)
#define PWM1_CR2 (*(unsigned char volatile xdata *)0xfec1)
#define PWM1_SMCR (*(unsigned char volatile xdata *)0xfec2)
#define PWM1_ETR (*(unsigned char volatile xdata *)0xfec3)
#define PWM1_IER (*(unsigned char volatile xdata *)0xfec4)
#define PWM1_SR1 (*(unsigned char volatile xdata *)0xfec5)
#define PWM1_SR2 (*(unsigned char volatile xdata *)0xfec6)
#define PWM1_EGR (*(unsigned char volatile xdata *)0xfec7)
#define PWM1_CCMR1 (*(unsigned char volatile xdata *)0xfec8)
#define PWM1_CCMR2 (*(unsigned char volatile xdata *)0xfec9)
#define PWM1_CCMR3 (*(unsigned char volatile xdata *)0xfeca)
#define PWM1_CCMR4 (*(unsigned char volatile xdata *)0xfecb)
#define PWM1_CCER1 (*(unsigned char volatile xdata *)0xfecc)
#define PWM1_CCER2 (*(unsigned char volatile xdata *)0xfecd)
#define PWM1_CNTR (*(unsigned intvolatile xdata *)0xfece)
#define PWM1_CNTRH (*(unsigned char volatile xdata *)0xfece)
#define PWM1_CNTRL (*(unsigned char volatile xdata *)0xfecf)
#define PWM1_PSCR (*(unsigned intvolatile xdata *)0xfed0)
#define PWM1_PSCRH (*(unsigned char volatile xdata *)0xfed0)
#define PWM1_PSCRL (*(unsigned char volatile xdata *)0xfed1)
#define PWM1_ARR (*(unsigned intvolatile xdata *)0xfed2)
#define PWM1_ARRH (*(unsigned char volatile xdata *)0xfed2)
#define PWM1_ARRL (*(unsigned char volatile xdata *)0xfed3)
#define PWM1_RCR (*(unsigned char volatile xdata *)0xfed4)
#define PWM1_CCR1 (*(unsigned intvolatile xdata *)0xfed5)
#define PWM1_CCR1H (*(unsigned char volatile xdata *)0xfed5)
#define PWM1_CCR1L (*(unsigned char volatile xdata *)0xfed6)
#define PWM1_CCR2 (*(unsigned intvolatile xdata *)0xfed7)
#define PWM1_CCR2H (*(unsigned char volatile xdata *)0xfed7)
#define PWM1_CCR2L (*(unsigned char volatile xdata *)0xfed8)
#define PWM1_CCR3 (*(unsigned intvolatile xdata *)0xfed9)
#define PWM1_CCR3H (*(unsigned char volatile xdata *)0xfed9)
#define PWM1_CCR3L (*(unsigned char volatile xdata *)0xfeda)
#define PWM1_CCR4 (*(unsigned intvolatile xdata *)0xfedb)
#define PWM1_CCR4H (*(unsigned char volatile xdata *)0xfedb)
#define PWM1_CCR4L (*(unsigned char volatile xdata *)0xfedc)
#define PWM1_BKR (*(unsigned char volatile xdata *)0xfedd)
#define PWM1_DTR (*(unsigned char volatile xdata *)0xfede)
#define PWM1_OISR (*(unsigned char volatile xdata *)0xfedf)
#define PWM2_CR1 (*(unsigned char volatile xdata *)0xfee0)
#define PWM2_CR2 (*(unsigned char volatile xdata *)0xfee1)
#define PWM2_SMCR (*(unsigned char volatile xdata *)0xfee2)
#define PWM2_ETR (*(unsigned char volatile xdata *)0xfee3)
#define PWM2_IER (*(unsigned char volatile xdata *)0xfee4)
#define PWM2_SR1 (*(unsigned char volatile xdata *)0xfee5)
#define PWM2_SR2 (*(unsigned char volatile xdata *)0xfee6)
#define PWM2_EGR (*(unsigned char volatile xdata *)0xfee7)
#define PWM2_CCMR1 (*(unsigned char volatile xdata *)0xfee8)
#define PWM2_CCMR2 (*(unsigned char volatile xdata *)0xfee9)
#define PWM2_CCMR3 (*(unsigned char volatile xdata *)0xfeea)
#define PWM2_CCMR4 (*(unsigned char volatile xdata *)0xfeeb)
#define PWM2_CCER1 (*(unsigned char volatile xdata *)0xfeec)
#define PWM2_CCER2 (*(unsigned char volatile xdata *)0xfeed)
#define PWM2_CNTR (*(unsigned intvolatile xdata *)0xfeee)
#define PWM2_CNTRH (*(unsigned char volatile xdata *)0xfeee)
#define PWM2_CNTRL (*(unsigned char volatile xdata *)0xfeef)
再贴上STC提供的一个例程:
#include "reg51.h"
#include "intrins.h"
#include "stdio.h"
#define FOSC 11059200L
#define BAUD 115200
typedef unsigned char BYTE;
typedef unsigned short WORD;
sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;
sfr P_SW2 = 0xba;
//高级PWM SFR
#define PWM1_ENO (*(unsigned charvolatile xdata *)0xFEB1)
#define PWM1_PSCRH (*(unsigned char volatile xdata *)0xfed0)
#define PWM1_PSCRL (*(unsigned char volatile xdata *)0xfed1)
#define PWM1_CR1 (*(unsigned charvolatile xdata *)0xFEC0)
#define PWM1_CCMR1 (*(unsigned charvolatile xdata *)0xFEC8)
#define PWM1_CCER1 (*(unsigned charvolatile xdata *)0xFECC)
#define PWM1_ARRH (*(unsigned charvolatile xdata *)0xFED2)
#define PWM1_ARRL (*(unsigned charvolatile xdata *)0xFED3)
#define PWM1_CCR1H (*(unsigned charvolatile xdata *)0xFED5)
#define PWM1_CCR1L (*(unsigned charvolatile xdata *)0xFED6)
#define PWM1_BKR (*(unsigned charvolatile xdata *)0xFEDD)
void main()
{
P1M0 = 0x01;
P1M1 = 0x00; //设置P10为推挽输出
P3M0 = 0x00;
P3M1 = 0x00;
P3 = 0xff;
P_SW2 = 0x80;
PWM1_PSCRH = 0X7f;
PWM1_PSCRL = 0Xf0;
PWM1_CCMR1 = 0x00; //CC1为输出模式
PWM1_CCMR1 |= 0x30; //比较匹配时OC1REF翻转输出
PWM1_CCER1 = 0x00; //设置输出极性为高电平有效
PWM1_CCER1 |= 0x01; //使能CC1上的输出功能
PWM1_CCR1H = 500 >> 8;
PWM1_CCR1L = 500;
PWM1_ARRH = 1000 >> 8; //周期值
PWM1_ARRL = 1000;
PWM1_CR1 = 0x01;
PWM1_ENO = 0x01;
PWM1_BKR = 0x90; //使能主输出,并使能刹车功能,当PWMFLT口为低时关闭PWM输出
// PWM1_BKR = 0xb0; //使能主输出,并使能刹车功能,当PWMFLT口为高时关闭PWM输出
// PWM1_BKR = 0xf0; //使能主输出,并使能刹车功能,当PWMFLT口为高时关闭PWM输出,并启动自动恢复功能
while (1);
}
顶一个!支持工匠精神!申请样品太麻烦,stc8h啥时候有得卖,咱也入手玩玩。
页:
[1]