led_matrix/main/ulp/main.c

47 lines
1.5 KiB
C
Raw Normal View History

2024-01-31 11:04:31 +08:00
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include "ulp_riscv.h"
#include "ulp_riscv_utils.h"
#include "ulp_riscv_gpio.h"
#define HUB75_OE_CAPTRUE__RTC_PIN_NUM GPIO_NUM_18
#define HUB75_LINE_ADDR_A_RTC_PIN_NUM GPIO_NUM_16
#define HUB75_LINE_ADDR_B_RTC_PIN_NUM GPIO_NUM_15
#define HUB75_LINE_ADDR_C_RTC_PIN_NUM GPIO_NUM_14
#define HUB75_LINE_ADDR_D_RTC_PIN_NUM GPIO_NUM_13
volatile int line = 0;
volatile int s = 0;
static bool gpio_level = false;
int main (void)
{
// ulp_riscv_gpio_init(HUB75_OE_CAPTRUE__RTC_PIN_NUM);
// ulp_riscv_gpio_input_enable(HUB75_OE_CAPTRUE__RTC_PIN_NUM);
// ulp_riscv_gpio_set_output_mode(HUB75_LINE_ADDR_A_RTC_PIN_NUM, RTCIO_MODE_OUTPUT);
// ulp_riscv_gpio_set_output_mode(HUB75_LINE_ADDR_B_RTC_PIN_NUM, RTCIO_MODE_OUTPUT);
// ulp_riscv_gpio_set_output_mode(HUB75_LINE_ADDR_C_RTC_PIN_NUM, RTCIO_MODE_OUTPUT);
// ulp_riscv_gpio_set_output_mode(HUB75_LINE_ADDR_D_RTC_PIN_NUM, RTCIO_MODE_OUTPUT);
while(1) {
gpio_level = (bool)ulp_riscv_gpio_get_level(HUB75_OE_CAPTRUE__RTC_PIN_NUM);
s++;
if (gpio_level == true)
{
ulp_riscv_gpio_output_level(HUB75_LINE_ADDR_A_RTC_PIN_NUM, line & 1);
ulp_riscv_gpio_output_level(HUB75_LINE_ADDR_B_RTC_PIN_NUM, (line >> 1) & 1);
ulp_riscv_gpio_output_level(HUB75_LINE_ADDR_C_RTC_PIN_NUM, (line >> 2) & 1);
ulp_riscv_gpio_output_level(HUB75_LINE_ADDR_D_RTC_PIN_NUM, (line >> 3) & 1);
}
}
return 0;
}