初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2020-5-19
- 在线时间
- 14 小时
|
1金钱
在做一个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);
}
}
|
|