Files
kunlun/dtest/bee_pwm_test/bee_pwm_test.c

102 lines
2.4 KiB
C
Raw Permalink Normal View History

2024-09-28 14:24:04 +08:00
/* os shim includes */
#include "os_types.h"
#include "dbg_io.h"
#include "iot_io.h"
#include "gpio_mtx.h"
#include "pwm.h"
uint8_t pwm_gpio_sel(uint8_t port, uint8_t pwma, uint8_t pwmb)
{
gpio_mtx_enable();
volatile uint8_t pwma_func = 0;
volatile uint8_t pwmb_func = 0;
pwma_func = gpio_pin_func_get(pwma);
pwmb_func = gpio_pin_func_get(pwmb);
gpio_sig_info_t info = {0};
if (port == PWM_CHANNEL_0) {
info.sig_type = 4;
info.CFG[0].type = IO_TYPE_OUT;
info.CFG[0].func = pwma_func;
info.CFG[0].gpio = pwma;
info.CFG[0].inid = 0xff;
info.CFG[0].outid = 71;
info.CFG[1].type = IO_TYPE_OUT;
info.CFG[1].func = pwmb_func;
info.CFG[1].gpio = pwmb;
info.CFG[1].inid = 0xff;
info.CFG[1].outid = 72;
} else if (port == PWM_CHANNEL_1){
info.sig_type = 4;
info.CFG[0].type = IO_TYPE_OUT;
info.CFG[0].func = pwma_func;
info.CFG[0].gpio = pwma;
info.CFG[0].inid = 0xff;
info.CFG[0].outid = 73;
info.CFG[1].type = IO_TYPE_OUT;
info.CFG[1].func = pwmb_func;
info.CFG[1].gpio = pwmb;
info.CFG[1].inid = 0xff;
info.CFG[1].outid = 74;
}else if (port == PWM_CHANNEL_2){
info.sig_type = 4;
info.CFG[0].type = IO_TYPE_OUT;
info.CFG[0].func = pwma_func;
info.CFG[0].gpio = pwma;
info.CFG[0].inid = 0xff;
info.CFG[0].outid = 75;
info.CFG[1].type = IO_TYPE_OUT;
info.CFG[1].func = pwmb_func;
info.CFG[1].gpio = pwmb;
info.CFG[1].inid = 0xff;
info.CFG[1].outid = 76;
}
gpio_module_pin_select(&info);
gpio_module_sig_select(&info, GPIO_MTX_MODE_MATRIX);
return 0;
}
void pwm_main(void)
{
volatile uint32_t delay =0;
uint8_t duty = 0;
dbg_uart_init();
pwm_gpio_sel( 0, 37, 38);
pwm_init();
pwm_open(0, NULL);
while(1)
{
for(duty = 0; duty <= 100; duty += 5)
{
pwm_set_duty(PWM_CHANNEL_0, duty * 100);
iot_printf("PWM Duty: %d%%\r\n",duty);
delay = 10000000;
while(delay--);
}
for(duty = 100; duty > 0; duty -= 5)
{
pwm_set_duty(PWM_CHANNEL_1, duty * 100);
iot_printf("PWM Duty: %d%%\r\n",duty);
delay = 10000000;
while(delay--);
}
}
}
#ifdef __GNUC__
int main(void) {
pwm_main();
return 0;
}
#endif // __GCC__