- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
stm32-ADC多通道采样例程(HAL库)
stm32-ADC多通道采样例程(HAL库)
PAGE PAGE 16
PAGE 16
stm32-ADC多通道采样例程(HAL库)
Stm32 基于HAL库ADC多通道采样例程
用cubemx建立工程,cubemx 版本,芯片型号:stm32f103zet6
开启外部高速时钟HSE,配置系统时钟为72M
注意:ADC1时钟配置为9MHz
(2)配置串口1,设置好波特率并开启串口中断
启用ADC1 通道1,3,4,5,6
注意要先设置好通道数量才能配置,各自ADC通道的参数。Rank 是转换顺序,我们按1,2,3,4,5的顺序分别对应ADC1通道0,1,4,5,6。多通道采样要开启扫描工作模式,在这里我们还有开启连续转换方式,连续转换是在ADC转换按照约定的转换顺序全部通道完成一次转换后,又自动启动下一次转换。
启用ADC转换DMA传输,多通道转换时要启用ADC的DMA传输,才能在相应的通道转换完成后,DMA自动去获取转换值。中断方式没法在多通道采样时使用,因为在多通道扫描模式下,只有在最后一个通道转换结束时才会产生中断请求。而ADC数据寄存器是共用的,这时候进入中断取值只能得到一个通道的数值。
到此,基础配置和ADC通道配置已经完成,接着我们设置工程名称和保存路径等就可以了,一般工程名和保存路径最好不要有中文,不然可能会出现一些意想不到的问题,在测试的过程中就遇到工程名或者保存路径中都用英文但是词组名称之间用空格隔开,在打开生成的工程文件后,向新建的分类文件夹中添加自己写的文件,就导致keil软件卡死,不知道是keil软件还是cubemx的问题。
设置好工程名称和路径后就可以生成代码了,生成代码后我们选择打开工程。
接着我们开始编写代码
首先我们要修改main函数的一个错误,就是在初始化时要把MX_DMA_Init()函数放在MX_ADC1_Init()函数之前执行,cubemx生成代码时MX_DMA_Init()是在ADC初始化函数之后。如果在后面则转换时打印输出的ADC值,大多数都为0,具体原因就不知道是怎么回事了,应该是cubemx这个版本还不太稳定。
接下来我们在文件中增加一些代码
增加printf重定向到串口的代码,并定义一个串口接收到数据的标志变量和数据缓冲数组。作用是在我们用串口调试助手给单片机发送数据时才打印输出ADC数据。
uint8_t RecFlag,RxBuf[512];
【代码】:
////重定向c库函数printf到USARTx
struct __FILE //标准库需要的支持函数
{
int handle;
};
int fputc(int ch, FILE *f)
{
while(SR0X40)==0);//循环发送,直到发送完毕
DR = (uint8_t)ch ;
return (ch);
}
编写串口数据接收函数void My_UsartDateRec(UART_HandleTypeDef *huart),这里就不在回调函数中编写了,然后文件中的串口中断函数中调用这个函数来接收串口数据。此外我们还需要在串口初始化函数
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)中,增加使能串口接收中断和空闲中断。
__HAL_UART_ENABLE_IT(huart1, UART_IT_RXNE); //使能接收中断
__HAL_UART_ENABLE_IT(huart1, UART_IT_IDLE);//使能空闲中断
记得在文件开始部分包含头文件。
【代码】:
void My_UsartDateRec(UART_HandleTypeDef *huart)
{
// uint8_t temp=0;
static unsigned int num; //接收计数
//查询是否发生了空闲中断
if(__HAL_UART_GET_FLAG(huart,UART_FLAG_IDLE)!=RESET__HAL_UART_GET_IT_SOURCE(huart,UART_IT_IDLE)!=RESET)
{
RecFlag =1;//收到数据
num=0;
__HAL_UART_CLEAR_IDLEFLAG(huart);//清除空闲中断
}
else if(__HAL_UART_GET_IT_SOURCE(huart,UART_IT_RXNE)!=RESET)//帧传输未完成,按字节接收
{
if(num sizeof (RxBuf) )//缓冲区未满
RxBuf[num++
您可能关注的文档
- should-must-can-用法难点分析.doc
- Sketch-engine主要功能介绍.docx
- SMP-11-007-01色谱柱管理规程完整.doc
- SMP-11001-00委托生产与委托检验管理规程.doc
- Socket和多线程编程的聊天程序实现.docx
- SNS网站营销方案.doc
- SOC设计方法与实现.doc
- spsss税收影响因素分析.doc
- SPSS线性回归分析案例.doc
- sql学生成绩管理系统课程设计数据库.doc
- 2025北京航空工业集团综合所高层次人才及博士招聘20人笔试参考题库附答案.docx
- 2025安徽亳州市利辛县巡察信息中心遴选5人备考题库附答案.docx
- 2025宁波鄞州区东柳街道编外招聘1人备考题库附答案.docx
- 2025云南楚雄市机关事业单位选调63人备考题库附答案.docx
- 2025北京中国社会科学调查中心招聘劳动合同制人员1人备考题库附答案.docx
- 2025宁波市市场监督管理局局属事业单位宁波市标准化研究院招聘高层次人才1人备考题库附答案.docx
- 2025河南郑州铁路职业技术学院招聘合同制工作人员48人笔试历年题库附答案解析.docx
- 2025云南玉溪市红塔区文化和旅游局招聘办公辅助人员1人备考题库附答案.docx
- 2025山东日照市岚山区卫生健康系统事业单位招聘20人备考题库附答案.docx
- 2025四川九州电子科技股份有限公司招聘车载电子事业部-PQE岗笔试参考题库附答案.docx
最近下载
- 本田 Honda CTX1300 用户手册.pdf
- 阿里云3A理论业务打通关-理论结业大考考试题库答案.docx VIP
- 2024年云3A理论业务打通关-理论结业大考答案题库.docx VIP
- 新云3A理论业务打通关-理论结业大考考试答案题库.docx VIP
- 3526 高天成主讲 王力《古代汉语》冲刺串讲及模拟六套卷.pdf VIP
- 阿里云新部门理论业务大通关-理论结业大考V240424考试淘-消费者岗前新人课程-理论结业大考.docx VIP
- 现代酒店卓越服务课件:从入门到精通.ppt VIP
- 2025年事业单位笔试-北京-北京超声医学(医疗招聘)历年参考题典型考点含答案解析.docx VIP
- 7683 李兆虹主讲《中国现代文学三十年》考点精讲及复习思路.pdf VIP
- 心肺复苏考试题(附答案).docx VIP
原创力文档


文档评论(0)