使用
STM32的hal库实现adc采样函数
rt_uint32_t get_adc_value(void){ HAL_ADC_Start(&hadc1); HAL_ADC_PollForConversion(&hadc1, 10); return (rt_uint32_t)HAL_ADC_GetValue(&hadc1);}四、核心代码
/* 定时器1超时函数 */static void timeout1(void *parameter){ rt_kprintf("periodic timer is timeout %dn", cnt); cnt ++; /* 读取ADC的数值 */ read_value = get_adc_value(); vol = read_value*330/4096; rt_thread_mdelay(1000); rt_kprintf("
adc value = %drn", read_value); rt_kprintf("the voltage is :%d.%02d n", vol / 100, vol % 100);}//下面的代码是在main函数里的初始化定时器的代码timer1 = rt_timer_create("timer1", timeout1, RT_NULL, 1000, RT_TIMER_FLAG_PERIODIC); /* 启动定时器1 */ if (timer1 != RT_NULL) rt_timer_start(timer1);五、测试
编译下载到开发板上,PA7连接3.3V电压引脚,可以看到每1秒采集一个电压数据,测试正常。
六、总结
电子发烧友和RT-Thread推出的这门课程体验很nice,何老师对RT-Thread的内容讲解得非常透彻,在讲授课程的时候非常有耐心,期待何志杰老师有推出更多嵌入式的内容,也期待电子发烧友和RT-Thread向我们推荐更多这样优质的内容。