📄 d0a268f6ea21001e16fea2237907c44c
字号:
#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 + -