板卡的ADC采集是作为计划的一部分,不过只是测试Demo,以下仅为使用过程分享。
使用CubeMX工具创建新的工程,时钟等配置保持不变。
选择ADC4的通道8,其他参数默认。然后生成代码。例程的Uart_Pirintf中拷贝出重定向代码做了多种编译器的兼容,我只用MDK,自己添加。
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,0xFFFF);
return ch;
}
然后AC6编译,勾选Use MicroLib即可,但实际上会产生错误。修改方法有点奇怪,但是管用。
图片中的两处先注释掉,然后编译一次,还是会报一处错误,不用在意。取消注释,再次编译就没问题了。这里的IF不知道是不是和MDK 的配置产生了冲突。或者没有识别出来。
然后添加ADC部分的代码。
if (HAL_ADC_Start(&hadc4) != HAL_OK)
{
/* Start Conversation Error */
Error_Handler();
}
HAL_ADC_PollForConversion(&hadc4, 10);
if ((HAL_ADC_GetState(&hadc4) & HAL_ADC_STATE_REG_EOC) == HAL_ADC_STATE_REG_EOC)
{
ADC_ValueIN4 = HAL_ADC_GetValue(&hadc4);
printf("adc value = %d, vlot = %.2fmV\r\n",ADC_ValueIN4,ADC_ValueIN4*0.806);
}
以上简单的处理后,工程就可以读取到ADC采集的数据了,悬空PA1, 有如下读数
连接PA1到3V3的插针引脚上,可以得到如下读数
基本可用,接下来通过蓝牙传数据。
|