NuMicro Cortex_M058 PWM学习

#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "DrvPWM.h"
S_DRVPWM_TIME_DATA_T spt;
void Init_System()
{
 
DrvGPIO_Open(E_PORT2,E_PIN0,E_IO_OUTPUT);
 
/*-------------------------------------------------------------*/
 
spt.u8Mode=1; // 自动装载模式
spt.u8HighPulseRatio=50; //占空比取值0到100
spt.i32Inverter=1; //反转输出开启
spt.u32Frequency=8000; //设定平率为8000Hz
spt.u8ClockSelector=0; //
spt.u8PreScale=0;
spt.u32Duty=0; //捕捉定时用的计数值
 
 
/*----------------------------------------------------------------*/
 
 
 
 
DrvPWM_SetTimerClk (DRVPWM_TIMER0, &spt); //初始化TIMER0时钟
 
 
DrvPWM_SetTimerIO(DRVPWM_TIMER0,1); //使能IO输出
DrvPWM_Enable(DRVPWM_TIMER0,1); //使能PWM0让它工作
 
 
 
 
int main(void)
{
DrvGPIO_InitFunction(E_FUNC_PWM01); // 设置GPIO口的PWM01功能
DrvPWM_SelectClockSource (DRVPWM_TIMER0, DRVPWM_EXT_12M );
//这个函数用于选择PWM0与PWM1,PWM2与PWM3,PWM4与PWM5,PWM6与
//PWM7的时钟源。
 DrvPWM_Open ( );// 使能PWM时钟并且复位PWM。
Init_System();
DrvGPIO_Open(E_PORT4, E_PIN3, E_IO_OUTPUT);
SysTick_Config(11991096);
while(1)
{
 
}
}
 
void SysTick_Handler()  //系统滴答时钟中断函数,基本一秒一次
{
 _PORT_DOUT(4,3)=!_PORT_DOUT(4,3); //LED灯闪烁指示
 spt.u8HighPulseRatio=spt.u8HighPulseRatio+1;
 if(spt.u8HighPulseRatio>=100)spt.u8HighPulseRatio=1; //调节占空比,1秒一次+1
 DrvPWM_SetTimerClk (DRVPWM_TIMER0, &spt); //初始化TIMER0时钟
}
期待 发表于09-24 09:21 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32864个|学分:87132个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号