hpwm.h头文件和hpwm.c文件,分别复制,保存成hpwm.h文件和hpwm.c文件,就能使用

【hpwm.h头文件和hpwm.c文件,分别复制,保存成hpwm.h文件和hpwm.c文件,就能使用】赋料扬雄敌,诗看子建亲。这篇文章主要讲述hpwm.h头文件和hpwm.c文件,分别复制,保存成hpwm.h文件和hpwm.c文件,就能使用相关的知识,希望能为你提供帮助。
hpwm.h

#ifndef __HPWM_H #define __HPWM_H#include "STC8a8k.h"void HPWM_Init(); / //第一个参数,是PWM的通道,0----P20产生PWM,1--P21,,2--P22,3---P23 //第二个参数,是PWM的频率,电机一般是7000-10000的频率就行了,这里我选择的是8000,如果是舵机控制,这里可以是50hz //第三个参数,是占空比,这里是高电平的占空比,范围是0--1,占空比比例越大,电机速度越快。 void HPWM_Set(int PWMchannel, unsigned int f,float zkb); #endif

HPWM.c
#include "hpwm.h" /// void HPWM_Init() { //访问PWM在扩展RAM区的特殊功能寄存器,置1 //0:是扩展RAM,XRAM // P_SW2|=0x80; //必须加这句,将PSW2寄存器的bit7位置1 P_SW2=0x80; //管脚切换+初始高电平,参考stc官方例程 PWM0CR = 0xc0; PWM1CR = 0xc0; PWM2CR = 0xc0; PWM3CR = 0xc0; P_SW2=0x00; P_SW2=0x80; PWMCKS=0X0b; //设置PWM周期=系统时钟/12=11.0592mhz/12; PWMC=0x1000; //设置PWM周期为1000H个PWM时钟 //PWM配置寄存器 PWMCFG = 0x00; P_SW2 =0x00; // PWMCR |= 0x80; //使能PWM模块 PWMCR=0x80; }//****************************************** void HPWM_Set(int PWMchannel, unsigned int f,float zkb) { unsigned intCycleTime; P_SW2=0x80; CycleTime=(unsigned int)(9216/(f*0.01)); //根据频率,计算周期,频率的倒数,设置计数周期 PWMC=CycleTime; //设置PWM周期为1000H个PWM时钟 switch(PWMchannel) { case 0: PWM0T1 =zkb*CycleTime; // PWM0T2 = 0; break; case 1: PWM1T1 =zkb*CycleTime; // PWM1T2 = 0; //当计数到CYCLE的时候,会归0 break; case 2: PWM2T1 =zkb*CycleTime; // PWM2T2 =0; //当计数到CYCLE的时候,会归0 break; case 3: PWM3T1 =zkb*CycleTime; //占空比为(T2-T1)/cycle=zkb PWM3T2 = 0; //当计数到CYCLE的时候,会归0 break; default:break; } //将P_SW2的b7清0,从xram执行 PWMCR |= 0x80; //使能PWM模块 // P_SW2 & =~0x80; P_SW2=0x00; }


    推荐阅读