You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "ozone_pwm_control.h"
uint32_t s_hardware_frequency; // hz
uint32_t s_hardware_duty; //��λms���������ڵ�PWMռ�ձ�
uint32_t s_large_period; //��λms���������ڵĶ�ʱ����
uint32_t s_large_duty = 100; //��λms���������ڵĶ�ʱռ�ձ�
uint32_t begin_ticket;
bool ozone_pwm_control_enable_falg = false; void HOOK_pwm_module_set_pwm_duty(uint32_t frequencyhz, uint32_t duty); void HOOK_pwm_stop(void); bool HOOK_pwm_is_enable(void);
static void prv_update_begin_ticket(void) { begin_ticket = get_sys_ticket(); //���´����ڵĿ�ʼʱ�䣨��Ъʱ���Ŀ�ʼ��ʱ�䣩
}
bool ozone_pwm_control_is_enable(void) { return ozone_pwm_control_enable_falg; }
/**
* @brief һֱ������ʱ�䶨ʱ��ռ�ձ�Ϊ100�� * ��Ъʱ������300000 * @param freq * @param duty */ void ozone_pwm_control_module_set_pwm_output_1(uint32_t freqhz, uint8_t hardware_duty) { ozone_pwm_control_module_set_pwm_output_2(freqhz, hardware_duty, 100 * 1000, 100); } /**
* @brief ��ʱ��PWM * * @param hardware_period pwmƵ�� * @param hardware_duty pwmռ�ձ� * @param large_period ��ʱ���� * @param large_duty ��ʱռ�ձ� */ void ozone_pwm_control_module_set_pwm_output_2(uint32_t freqhz, uint8_t hardware_duty, uint32_t large_period, uint8_t large_duty) { s_hardware_frequency = freqhz; s_hardware_duty = hardware_duty; s_large_period = large_period; s_large_duty = large_duty; prv_update_begin_ticket(); ozone_pwm_control_enable_falg = true; HOOK_pwm_module_set_pwm_duty(freqhz, hardware_duty); }
void ozone_pwm_control_module_stop_pwm(void) { ozone_pwm_control_enable_falg = false; }
void ozone_pwm_control_module_loop(void) { static uint32_t hardware_frequency; static uint32_t hardware_duty; if (ozone_pwm_control_is_enable() == false) { //û��ʹ��ֱ���˳�
if (HOOK_pwm_is_enable()) { HOOK_pwm_stop(); } return; } if (port_haspassedms(begin_ticket) % s_large_period <= s_large_period * s_large_duty / 100) { if (!HOOK_pwm_is_enable()) { printf("set work\r\n"); HOOK_pwm_module_set_pwm_duty(hardware_frequency, hardware_duty); } } else { if (HOOK_pwm_is_enable()) { printf("set rest\r\n"); hardware_frequency = s_hardware_frequency; //���ر�֮ǰ��Ƶ�ʽ��б���
hardware_duty = s_hardware_duty; //���ر�֮ǰ��ռ�ձȽ��б���
HOOK_pwm_stop(); } } }
|