//---- gpio.h ----// #include <stdint.h> // uint 函数 头文件 static uint8_t ddrsum[6] = { 7, 3, 7, 3, 7, 7 }; // const 只读,不允许改变的关键字数组类型 /* static uint64_t gpioNM[] = { 'DDRT', 'DDRM', 'DDRS', 'DDRJ', 'DDRP', 'DDR0AD' }; */ static uint64_t gpioNM[] = { 'T', 'M', 'S', 'J', 'P', 'D' }; // 参数结构体 typedef struct { uint64_t gpioname; uint8_t gpiosum; uint8_t _incAD; uint8_t i; }GPIOtruct; extern GPIOtruct gpio; //---- gpio.c ----// #include <stdio.h> // 标准头文件 #include <stdint.h> // uint_8 头文件 #include <string.h> #include "gpio.h" GPIOtruct gpio; uint64_t PgpioNM[6]; uint8_t Pddrsum[6]; uint8_t counti= sizeof(ddrsum)/sizeof(ddrsum[0]); // 数组总字节大小 除以 第一个字节大小 等于 多少个数组元素 void GetValue(void) // 从 .h 里面获取数组 { uint64_t *pRom, *pRam; uint8_t Cnt = 0; pRom = (uint64_t*)&gpioNM; pRam = (uint64_t*)&PgpioNM; Cnt = counti; while(Cnt--) { *pRam++ = *pRom++; } pRom = (uint8_t*)&ddrsum; pRam = (uint8_t*)&Pddrsum; Cnt = counti; while(Cnt--) { *pRam++ = *pRom++; } } void jisuan(GPIOtruct *_gpio) { _gpio->gpiosum = Pddrsum[_gpio->i]; // 获取个数 _gpio->gpioname = PgpioNM[_gpio->i ]; // 获取名字 uint8_t i = _gpio->gpiosum; // char *p; // p=_gpio->gpioname; // 强制转换变量类型 //strcpy(p, _gpio->gpioname); char *p; p=_gpio->gpioname; for (;;) { if( 0 > i || 255 == i ) { break; } printf( "DDR%s_DDR%s%d=0; \n" ,&p, &p, i ); // 打印: 是指针的内存地址,对应的值 i--; } } int main(int argc, char const *argv[]) { uint8_t i=0; GetValue(); for(;;) { usleep(200000); // 200ms gpio.i=i; if(counti-1<i) // count=6 时 循环7次; 6-1=5 循环6次 { printf("exit! i = %d counti = %d \n \n ",i, counti); break; } else { printf("\n"); } jisuan(&gpio); i++; } return 0; }
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统【软著登字第15121829号】安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:18.97.14.81,2025-03-24 13:33:43,Processed in 0.02182 second(s).