硬汉嵌入式论坛

 找回密码
 立即注册
查看: 502|回复: 1
收起左侧

读取GPIO数据存进内存

[复制链接]

4

主题

2

回帖

14

积分

新手上路

积分
14
发表于 2022-5-9 20:01:51 | 显示全部楼层 |阅读模式
大佬们,我想将8个IO口的数据存进内存里面,所以写了下面的程序,先把IO口数据(6MHZ)组合再通过DMA的方式存入SDRAM。一是下面的方法只在IO口数据未发生改变时测试有效,高数的数据输入时,单步调试显示数据为0,我想可能是外部输入一直在变?所以想问下我这么抓数据的想法是否可行,或者还有更简洁的方法吗,跪求了
uint32_t get_gpio_data()
{
        volatile uint8_t gpio_data = 0x00;
        gpio_data =  (uint8_t)HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_6);
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7)<<1;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_10)<<2;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOG, GPIO_PIN_11)<<3;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4)<<4;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOD, GPIO_PIN_3)<<5;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_5)<<6;
        gpio_data |=  (uint8_t)HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_6)<<7;
        return gpio_data;
}
二是我看到有通过DMA直接将GPIO读到内存的方法,但是找到的也是没有像我这样读零散引脚的。


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107898
QQ
发表于 2022-5-10 01:06:52 | 显示全部楼层
你这个用同组GPIO端多方便,比如GPIO的PIN0到PIN7,直接读取GPIO->IDR就行,方便太多了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-18 00:55 , Processed in 0.151352 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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