ISKBoard example project
Wenxue
2025-09-02 83cf83d37790889e5bb3ebb365e8e536814a6256
Core/Src/board/miscdev.c
@@ -180,3 +180,87 @@
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/*
 *+----------------------------+
 *| ADC noisy & lux sensor API |
 *+----------------------------+
 */
#include "adc.h"
int adc_sample_lux_noisy(uint32_t *lux, uint32_t *noisy)
{
    uint8_t            i;
    uint32_t           timeout = 0xffffff;
    for(i=0; i<ADCCHN_MAX; i++)
    {
            HAL_ADC_Start(&hadc1);
            HAL_ADC_PollForConversion(&hadc1, timeout);
            if( ADCCHN_NOISY == i )
            {
                *noisy = HAL_ADC_GetValue(&hadc1);
            }
            else if( ADCCHN_LUX == i )
            {
                *lux = HAL_ADC_GetValue(&hadc1);
            }
            HAL_Delay(10);
    }
    HAL_ADC_Stop(&hadc1);
    return 0;
}
/*
 *+----------------------------+
 *|  Timer Buzzer/delay API    |
 *+----------------------------+
 */
#include "tim.h"
/* Max to 60000 us */
void udelay(uint16_t us)
{
    uint16_t differ = 60000-us;
    HAL_TIM_Base_Start(&htim6);
    __HAL_TIM_SET_COUNTER(&htim6, differ);
    while( differ < 60000 )
    {
        differ=__HAL_TIM_GET_COUNTER(&htim6);
    }
    HAL_TIM_Base_Stop(&htim6);
}
void beep_start(uint16_t times, uint16_t interval)
{
    while( times-- )
    {
        /* Start buzzer */
        if (HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4) != HAL_OK)
        {
            /* Starting Error */
            Error_Handler();
        }
        HAL_Delay(interval);
        /* Stop buzzer */
        if (HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_4) != HAL_OK)
        {
            /* Starting Error */
            Error_Handler();
        }
        HAL_Delay(interval);
    }
}