#include "stm32f10x.h" #include "delay.h" #include "FSR.h" #include "usart.h" #include "adc.h" #define PRESS_MIN 20 #define PRESS_MAX 6000 #define VOLTAGE_MIN 150 #define VOLTAGE_MAX 3300 u8 state = 0; u16 val = 0; u16 value_AD = 0; long PRESS_AO = 0; int VOLTAGE_AO = 0; long map(long x, long in_min, long in_max, long out_min, long out_max); int main(void) { delay_init(); NVIC_Configuration(); uart_init(9600); Adc_Init(); delay_ms(1000); printf("Test start\r\n"); while(1) { value_AD = Get_Adc_Average(1,10); VOLTAGE_AO = map(value_AD, 0, 4095, 0, 3300); if(VOLTAGE_AO < VOLTAGE_MIN) { PRESS_AO = 0; } else if(VOLTAGE_AO > VOLTAGE_MAX) { PRESS_AO = PRESS_MAX; } else { PRESS_AO = map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX); } printf("ADÖµ = %d,µçѹ = %d mv,ѹÁ¦ = %ld g\r\n",value_AD,VOLTAGE_AO,PRESS_AO); delay_ms(500); } } long map(long x, long in_min, long in_max, long out_min, long out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }将该代码从stm32中移植到bl618中进行改写,要求使用头文件#include "bflb_adc.h" #include "bflb_mtimer.h" #include "board.h",使用通道2struct bflb_adc_channel_s chan[] = { { .pos_chan = ADC_CHANNEL_2, .neg_chan = ADC_CHANNEL_GND },
时间: 2023-06-17 20:05:39 浏览: 52
#include "bflb_adc.h"
#include "bflb_mtimer.h"
#include "board.h"
#define PRESS_MIN 20
#define PRESS_MAX 6000
#define VOLTAGE_MIN 150
#define VOLTAGE_MAX 3300
struct bflb_adc_channel_s chan[] = {
{
.pos_chan = ADC_CHANNEL_2,
.neg_chan = ADC_CHANNEL_GND
}
};
u8 state = 0;
u16 val = 0;
u16 value_AD = 0;
long PRESS_AO = 0;
int VOLTAGE_AO = 0;
long map(long x, long in_min, long in_max, long out_min, long out_max);
int main(void)
{
bflb_platform_init();
bflb_adc_init();
bflb_adc_channel_config(chan, ARRAY_SIZE(chan));
bflb_adc_enable();
bflb_mtimer_init();
printf("Test start\n");
while (1) {
bflb_adc_get_data(chan, ARRAY_SIZE(chan), &value_AD);
VOLTAGE_AO = map(value_AD, 0, 4095, 0, 3300);
if (VOLTAGE_AO < VOLTAGE_MIN) {
PRESS_AO = 0;
} else if (VOLTAGE_AO > VOLTAGE_MAX) {
PRESS_AO = PRESS_MAX;
} else {
PRESS_AO = map(VOLTAGE_AO, VOLTAGE_MIN, VOLTAGE_MAX, PRESS_MIN, PRESS_MAX);
}
printf("AD value = %d, voltage = %d mV, pressure = %ld g\n", value_AD, VOLTAGE_AO, PRESS_AO);
bflb_mdelay(500);
}
}
long map(long x, long in_min, long in_max, long out_min, long out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}