愿你成为自己的太阳,无需凭借谁的光。
1、任务计划
(1)看adc的视频,掌握ADC基本原理。
(2)学习编写ADC程序。
2、计划完成度
(1)ADC的基本原理已经都学完了。包括STM32板子中ADC板块的电路结构、常用的寄存器、常用的库函数。
在之前的博客中,我有总结ADC的一些基本概念,现在就直接来看看寄存器吧。
1)ADC_CR1控制寄存器1的位8:SCAN 位,该位用于设置扫描模式,由软件设置和清除;
2)ADC_CR1[25:24]用于设置 ADC 的分辨率;
3)ADC_CR2 寄存器

位 27:24 EXTSEL[3,0]:为规则组选择外部事件;
位30,SWSTART 位用于开始规则通道的转换。
3)ADC 采样时间寄存器(ADC_SMPR1 和 ADC_SMPR2) ,这两个寄存器用于设置通道 0~18 的采样时间,每个通道占用 3 个位。
这里专门讲了ADC采样时间。ADC 的转换时间可以由以下公式计算:Tcovn=采样时间+12 个周期 。
4)ADC 规则序列寄存器(ADC_SQR1~3)。该寄存器总共有 3 个,这几个寄存器的功能都差不多 。
4)ADC 规则序列寄存器(ADC_SQR1~3)。该寄存器总共有 3 个,这几个寄存器的功能都差不多 。
5)ADC 规则数据寄存器(ADC_DR) 、ADC_JDR注入通道数据寄存器。存放相应通道的数据。
6)ADC 状态寄存器(ADC_SR),该寄存器保存了 ADC 转换时的各种状态。
接下来就是一些配置STM3200常用的库函数了。
1)ADC通用初始化函数ADC_CommonInit
接下来就是一些配置STM3200常用的库函数了。
1)ADC通用初始化函数ADC_CommonInit
voidADC_CommonInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct);
2)
ADC初始化函数ADC_Ini
tvoidADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
3)
ADC使能函数ADC_Cmd();
voidADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
4)
ADC使能软件转换函数ADC_SoftwareStartConvCmd
voidADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
5)
ADC规则通道配置函数ADC_RegularChannelConfig
voidADC_RegularChannelConfig(ADC_TypeDef* ADCx,uint8_t ADC_Channel,uint8_t Rank, uint8_t
ADC_SampleTime);
6)ADC获取转换结果函数ADC_GetConversionValue
uint16_tADC_GetConversionValue(ADC_TypeDef* ADCx);
(2)大体的看了写adc编程的需要的库函数和操作步骤。准备实战练习的时候,发现我的程序源码里面的文件小图标都是灰色的,是无法直接打开运行的。
我尝试着先打开MDK5,然后利用菜单栏的project选项打开程序源码。这种操作是可以的。
虽然是能打开程序了,但是文件夹的小图标是灰色的,显然是软件环境不一定是哪里出现了什么问题。为了以防后患,我就把软件都检查了一遍,没有发现什么问题,也就是解决不了小图标灰色的问题了。我决定重新下载一次STM32。
可能是很久没有下载了,这次对着视频教程下载的,但还是比以前的要快一些的。
终于下载好了,也下载了PACK包,也破解了密码,但是软件却无法进行编译。开始编译的时候,它就会蹦出“The ARM C/C++停止工作”的字样。因为已经比较晚了,我就先回宿舍了,明天来了再研究吧。
唉,吃饭的东西出了问题,真的是一件很头疼的事情。不过,这应该也可以加深我对STM32的了解,也会增加一点处理问题的经验吧!