你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F030F4怎么读取PA口的值

[复制链接]
§MiCE§ 提问时间:2018-1-21 11:00 /
各位好!!
这样读取PA口的值是不是有问题?
void ACC_DET_SWITCH ()
{
        //static uint32_t ACC_DET_COUNT = 0;
        //static uint32_t LOCK_CLOSE_DET_Count = 0;
        static uint32_t ReadGPIO_PA_All = 0;
        ReadGPIO_PA_All = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_All);
       
        switch(ReadGPIO_PA_All)
        {
                case 0x603D:
                                        HAL_Delay(50);
                                        MIRROR_OPEN ;
                                        HAL_Delay(4000);
                                        MIRROR_OPEN_STOP;
                        break;
               
               
        }


01.jpg
收藏 评论11 发布时间:2018-1-21 11:00

举报

11个回答
§MiCE§ 回答时间:2018-1-21 11:02:02
这样没办法读到对应的值,有什么方法读取PA口的值吗?
七哥 回答时间:2018-1-21 14:52:35
本帖最后由 toofree 于 2018-1-21 15:07 编辑

STM32F030F4没用过。但STM32全系列有个特点,就是管脚模拟输入功能,要做数字输入用,得初始化成数字输入功能。

更正一下,刚看了下STM32F030的用户手册,PA口上电默认是数字输入功能。
傲游截图20180121150620.jpg

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

七哥 回答时间:2018-1-21 14:57:52
当然,要初始化IO工作模式和正常操作IO口时,PA口对应的外设时钟必须开启,上电默认是关闭的。
§MiCE§ 回答时间:2018-1-21 15:00:49
toofree 发表于 2018-1-21 14:52
STM32F030F4没用过。但STM32全系列有个特点,就是管脚模拟输入功能,要做数字输入用,得初始化成数字输入功 ...

GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
        我的IO口配置是这样的,有问题吗?
七哥 回答时间:2018-1-21 15:58:02
§MiCE§ 发表于 2018-1-21 15:00
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_M ...

HAL不会用,一直用的是标准固件库。
所有外设初始化时必须开时钟,见下图第一个红色框,对应IO的就是AHB、APB必须开。
对于输入,就是要置输入方向,要不要上下拉,第二个红色框。

傲游截图20180121155000.jpg




傲游截图20180121155514.jpg

wenyangzeng 回答时间:2018-1-21 21:09:53
§MiCE§ 发表于 2018-1-21 15:00
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_4|GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_M ...

初始化少了一句:
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;

读某1位:
HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7 );

读GPIO口:
ReadGPIO_PA_All=GPIOB->IDR;

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

§MiCE§ 回答时间:2018-1-24 21:05:16
toofree 发表于 2018-1-21 14:52
STM32F030F4没用过。但STM32全系列有个特点,就是管脚模拟输入功能,要做数字输入用,得初始化成数字输入功 ...

学习了!谢谢!
§MiCE§ 回答时间:2018-1-24 21:05:56
toofree 发表于 2018-1-21 14:57
当然,要初始化IO工作模式和正常操作IO口时,PA口对应的外设时钟必须开启,上电默认是关闭的。 ...

IO时钟是开着的,谢谢你的建议。
§MiCE§ 回答时间:2018-1-24 21:07:03
toofree 发表于 2018-1-21 15:58
HAL不会用,一直用的是标准固件库。
所有外设初始化时必须开时钟,见下图第一个红色框,对应IO的就是AHB ...

谢谢!我再看看。
§MiCE§ 回答时间:2018-1-24 21:17:40
toofree 发表于 2018-1-21 15:58
HAL不会用,一直用的是标准固件库。
所有外设初始化时必须开时钟,见下图第一个红色框,对应IO的就是AHB ...

你好!请问一下怎么读取低8位的值呢?
§MiCE§ 回答时间:2018-1-24 22:18:04
非常感谢两位的解答,问题也找到了。读取PA值(GPIOA->IDR)0X603D在仿真的时候是可以用的。正常情况下不能读取正常值,因为仿真脚在PA口中,仿真的时候时钟、数据都读为高电平,正常运行是减去仿真IO口的值为0X203D这样就工作正常了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版