⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d0a268f6ea21001e16fea2237907c44c

📁 自己编写的PWM模块
💻
字号:
#include "altera_avalon_pwm_routines.h"


int altera_avalon_pwm_init(unsigned int address, unsigned int clock_divider, unsigned int duty_cycle)
{
	if(duty_cycle > clock_divider)  //duty cycle reg must be less than or equal to clock divider
	{
		return ALTERA_AVALON_PWM_DUTY_CYCLE_GREATER_THAN_CLOCK_CYCLE_ERROR;
	}
	else
	{
		IOWR_ALTERA_AVALON_PWM_CLOCK_DIVIDER(address, clock_divider - 1);
		IOWR_ALTERA_AVALON_PWM_DUTY_CYCLE(address, duty_cycle);
	}
	 return ALTERA_AVALON_PWM_OK;
}

int altera_avalon_pwm_enable(unsigned int address)
{
  IOWR_ALTERA_AVALON_PWM_ENABLE(address, ALTERA_AVALON_PWM_ENABLE_MSK);
  
  if(IORD_ALTERA_AVALON_PWM_ENABLE(address) != ALTERA_AVALON_PWM_ENABLED) //Confirm PWM is enabled
  {
  	return ALTERA_AVALON_PWM_ENABLED_CONFIRMATION_ERROR;
  }
  return ALTERA_AVALON_PWM_OK;
}

int altera_avalon_pwm_disable(unsigned int address)
{
  IOWR_ALTERA_AVALON_PWM_ENABLE(address, ~ALTERA_AVALON_PWM_ENABLE_MSK);

  if(IORD_ALTERA_AVALON_PWM_ENABLE(address) != ALTERA_AVALON_PWM_DISABLED)  //Confirm PWM is disabled 
  {
  	return ALTERA_AVALON_PWM_DISABLED_CONFIRMATION_ERROR;
  }
  return ALTERA_AVALON_PWM_OK;
}


int altera_avalon_pwm_change_duty_cycle(unsigned int address, unsigned int duty_cycle)
{
	if(duty_cycle > IORD_ALTERA_AVALON_PWM_CLOCK_DIVIDER(address))  //duty cycle reg must be less than or equal to clock divider
	{
		return ALTERA_AVALON_PWM_DUTY_CYCLE_GREATER_THAN_CLOCK_CYCLE_ERROR;
	}
	else
	{
    IOWR_ALTERA_AVALON_PWM_DUTY_CYCLE(address, duty_cycle);
	}
  return ALTERA_AVALON_PWM_OK;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -