|
大佬们,我想将8个IO口的数据存进内存里面,所以写了下面的程序,先把IO口数据(6MHZ)组合再通过DMA的方式存入SDRAM。一是下面的方法只在IO口数据未发生改变时测试有效,高数的数据输入时,单步调试显示数据为0,我想可能是外部输入一直在变?所以想问下我这么抓数据的想法是否可行,或者还有更简洁的方法吗,跪求了![](static/image/smiley/wangwang/19.gif)
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读到内存的方法,但是找到的也是没有像我这样读零散引脚的。
|
|