(HAL库学习3)STM32CubeMX HAL库 ADC与DAC使用
程序员文章站
2022-06-09 08:37:41
...
这次的教学是用CubeMX开启STM32的ADC 与 DAC功能
本次测试再次换了一块板子,用的是STM32F103RCT6,并不是我想换哈,hal库无论你用啥板子,函数几乎都没发生改变,底层驱动又是软件默认帮我们设置好的,之所以换板子是因为系列中中低端的大多数板子是没有DAC功能的(ADC都有),以下赋一张F1的图
本次使用的RCT6就是F1系列上面这个48kbRAM这个,室友两个DAC的哈。
第一步:在CubeMX中使能ADC与DAC
以上是ADC的使能,有些特性我也没有用过,不过直接使用默认的已经能完成测测出精准电压的功能了
以上是DAC的开启设置,同样使用默认的即可
第二步:生成工程后使用HAL库输出DAC,读取ADC
按照上面的就可以使用ADC与DAC了,记住自己添加 uint16_t AD_Value = 0;在前面(main函数前面),作为ADC值读取的缓存,还有记住自己的代码写在BEGIN和END之间,这样你在CubeMX上随便增加删除硬件驱动,你都可以动态加入到自己工程里,你自己写的东西不得被删除
//这是DAC的相应函数
HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, 1024);
HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
//这是ADC的相应函数,放在循环里面就可以一直读取
HAL_ADC_Start(&hadc1); //启动ADC装换
HAL_ADC_PollForConversion(&hadc1, 50); //等待转换完成,第二个参数是超时时间,单位是ms.
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC)) //判断转换完成标志位是否设置
{
/*开始获取转换值*/
AD_Value = HAL_ADC_GetValue(&hadc1); //获取adc转换的数据
printf("adc读取的电压为: %.1fmv(%.2fv)\r\n",(double)(AD_Value*3300)/4096,(double)(AD_Value*3.3)/4096);
}
结果:
这里可以看出来,本来该是0.825,但是我的只有0.782,是因为我的单片机电源电压测出来只有3v左右,按上面的算法换算出来就是准确的,所以那个算法是针对严格3.3v的哈
最后
我是一个新人博主,目前也是一个大学生,但是真心喜欢嵌入式和物联网,已经自学3年了,我会带着热爱一直把博文写下去,也是自己记笔记的一种方式,大家可以关注我,给我留言,一起学习
上一篇: 同一个页面左右添加数据
下一篇: 怀孕吃海鲜,竟然还能这样吃