【求助位带操作】 位带操作的地址放入数组,实现while轮训位带操作的地址
在做一个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);
}
}
代码如下:
*****以下头文件:
#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);
}
}
...全文
相关推荐
vue中轮训器的使用
在Vue.js应用中,轮训(轮询)通常用于定期从服务器获取数据,以实现实时更新视图。本文将深入探讨如何在Vue中创建一个轮训器,并通过一个实际示例来展示其工作原理。
首页图片自动轮训
比如,当用户手动滑动时,自动轮训应该暂时停止,防止与用户的操作冲突。此外,考虑到性能和电池消耗,当应用进入后台或者设备处于省电模式时,应暂停轮训功能。
DNS轮训主辅配置
(用于将IP地址转换为域名)。
ESP8266程序,接口轮训实现温度采集
ESP8266程序通过接口轮训实现温度采集,涉及的主要技术包括ESP8266 WiFi模块、HTTP客户端库、ArduinoJson库以及串行通信。在物联网应用中,ESP8266因其低成本和强大
政治轮训心_轮训学习心得3篇.pdf
总结:政治轮训不仅是理论学习的过程,更是实践操作和职业素养提升的阶段。参与者在国际刑警组织的工作中,通过不断学习和挑战,提高了自身的专业能力和责任感。


单片机/工控
