OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5358|回复: 7

传感器模拟电压读入的问题

[复制链接]

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2021-4-20
在线时间
10 小时
发表于 2021-4-22 13:16:10 | 显示全部楼层 |阅读模式
1金钱
采用的是STM32F103战舰的板子,我想观察引脚PB11输入的模拟电压量,用了一个temp变量进行存储,调试的时候设置断点发现temp的值不改变,就是读取不了引脚的电压值,是我代码写错了澳吗,还是调试设置断点的过程有问题?用的是淘宝买的霍尔传感器模块,接好VCC和GND后用的A0作为输入引脚。


main.c文件:
int main(void)
{
        uint8_t temp=0;
        HALL_Init();
        while(1)
        {
                temp = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11);
        }

}


HARDWARE文件夹中的hall.c文件:
void HALL_Init(void)
{

                GPIO_InitTypeDef GPIO_InitStructure;
       
                //对应IO口的时钟使能
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

                //对应IO口GPIOA的初始化
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
                GPIO_InitStructure.GPIO_Speed  = GPIO_Speed_50MHz;
                GPIO_Init(GPIOB,&GPIO_InitStructure);

}


system文件夹中的hall.h文件:
#ifndef __HALL_H
#define __HALL_H
void HALL_Init(void);
#endif
调试过程:编译成功后,进行烧录,再进行调试,单步调试进入while循环,但是temp变量始终没改变。

是我调试过程出错了吗,还是编程有问题,或者有什么另外的方法可以读入传感器所采集到的模拟电压量呢?

最佳答案

查看完整内容[请看2#楼]

你这个代码也不是采集模拟量的啊,你就GPIO配置了个模拟输入,读的是PA0的输入电平,不是模拟量
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-4-22 13:16:11 | 显示全部楼层
你这个代码也不是采集模拟量的啊,你就GPIO配置了个模拟输入,读的是PA0的输入电平,不是模拟量
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-4-23 02:07:34 | 显示全部楼层
在while里面加个延时看看,另外,你temp的值根本没用到,有可能被优化掉,最好把temp的值打印出来
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2021-4-20
在线时间
10 小时
 楼主| 发表于 2021-4-23 23:20:37 | 显示全部楼层
阿侑kevin 发表于 2021-4-23 08:32
你这个代码也不是采集模拟量的啊,你就GPIO配置了个模拟输入,读的是PA0的输入电平,不是模拟量

那请问读入引脚的输入电压模拟量应该调用哪个函数呢?
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2021-4-20
在线时间
10 小时
 楼主| 发表于 2021-4-23 23:21:03 | 显示全部楼层
正点原子 发表于 2021-4-23 02:07
在while里面加个延时看看,另外,你temp的值根本没用到,有可能被优化掉,最好把temp的值打印出来

好的,谢谢原子哥,我试试
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2021-4-20
在线时间
10 小时
 楼主| 发表于 2021-4-25 10:45:41 | 显示全部楼层
正点原子 发表于 2021-4-23 02:07
在while里面加个延时看看,另外,你temp的值根本没用到,有可能被优化掉,最好把temp的值打印出来

原子哥 我加了个printf 现在那个temp有值了 但是这个值一直是0x00 但是我用电压表测电压都有 4.多伏,就算是读入的电平那也应该是0x01吧 。另外,我的根本问题其实是怎么读入引脚的模拟电压量
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-4-26 09:07:41 | 显示全部楼层
GoneZz 发表于 2021-4-23 23:20
那请问读入引脚的输入电压模拟量应该调用哪个函数呢?

参考原子的ADC例程
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2021-4-20
在线时间
10 小时
 楼主| 发表于 2021-4-26 22:04:44 | 显示全部楼层
阿侑kevin 发表于 2021-4-26 09:07
参考原子的ADC例程

好的谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 21:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表