【求助位带操作】 位带操作的地址放入数组,实现while轮训位带操作的地址

shiguojie19892 CSDN会员 shiguojie19892 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在做一个17芯线缆通断检测的程序,利用10个OUT口和10个IN口,依次控制OUT输出高低电平,希望把OUT口位带地址放进数组里面,请教应该怎么实现?对指针和位带操作的指针放入数组的操作不熟悉,请指教。

代码如下:
*****以下头文件:
#define LINE_NUM_SUM 17

#define OUT0 PAout(0)
#define OUT1 PBout(1)
#define OUT2 PBout(2)
#define OUT3 PBout(3)
#define OUT4 PBout(4)
#define OUT5 PAout(5)
#define OUT6 PBout(6)
#define OUT7 PBout(7)
#define OUT8 PBout(8)
#define OUT9 PBout(9)
#define OUT10 PBout(10)
#define OUT11 PBout(11)
#define OUT12 PBout(12)
#define OUT13 PBout(13)
#define OUT14 PBout(14)
#define OUT15 PBout(15)
#define OUT16 PAout(6)
#define OUT17 PAout(7)

**********以下C文件

void checkInit()
{
u8 i = 0;
GPIO_InitTypeDef GPIO_Initure;

__HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOB时钟
__HAL_RCC_GPIOB_CLK_ENABLE(); //开启GPIOE时钟
__HAL_RCC_GPIOC_CLK_ENABLE(); //开启GPIOE时钟

//OUT 初始化
GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; //0 5 6 7
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出
GPIO_Initure.Pull=GPIO_PULLDOWN; //下拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH; //高速
HAL_GPIO_Init(GPIOA,&GPIO_Initure); //GPIOA OUT

GPIO_Initure.Pin=GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4; //1 2 3 4
GPIO_Initure.Pin|=GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9; //6 7 8 9
GPIO_Initure.Pin|=GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13; //10 11 12 13
GPIO_Initure.Pin|=GPIO_PIN_14|GPIO_PIN_15; //14 15
HAL_GPIO_Init(GPIOB,&GPIO_Initure); //GPIOB OUT

//测试OUT能否循环输出
while(i < LINE_NUM_SUM)
{
if(OUTThis[i])
OUTThis[i] = 0;
else
OUTThis[i] = 1;

delay_ms(1000);
}
}
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
shiguojie19892 CSDN会员
单片机/工控 27,522 成员 28,796 内容