使用C语言编写的简单结构体初始化示例(开发工具DEV C 6.3),学习如何初始化STM32的GPIO

1 GPIO初始化的几个关键代码

GPIO_InitTypeDef  GPIO_PC3_InitStruct;

GPIO_PC2_InitStruct.GPIO_Pin = GPIO_Pin_2;      

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

GPIO_Init(GPIOC, &GPIO_PC2_InitStruct);

以下是stm32对GPIO初始化的几个关键代码,初学者不容易理解,因而自行写了C语言的范例。

2  C语言写的简单结构体初始化范例

用简单的例子展示了结构体的使用、自定义函数的实现以及结构体成员值的复制操作,认真消化就可以对stm32以上代码深刻理解:

/online run c @: https://www.onlinegdb.com/online_c_compiler
// DEV C++6.3安装 https://blog.csdn.net/WeiHao0240/article/details/113757133
// hello world 范例: file- new- project- 选下面的hello world 和 点击 下面的选C
// 中文无法显示看:https://blog.csdn.net/h465705089/article/details/124711035
#include <stdio.h>
//#include <string.h> // when use this, change strCopy to strcpy

#define a (&p1)
#define b (&p2)


// here we use  strCopy , instead strcpy from string.h
void strCopy(char *destination, char *source) {
    int i = 0;
    while (source[i]!= '\0') {
        destination[i] = source[i];
        i++;
    }
    destination[i] = '\0';
}

struct Person {
    char name[50];
    int age;
};

struct Person p0,p1,p2;

void IntP(struct Person* ptrPerson1, struct Person* ptrPerson2) {

    strCopy(ptrPerson1->name, ptrPerson2->name);//  
    ptrPerson1->age  =   ptrPerson2->age;

}

int main() {
    strCopy(p0.name, "Asdf");// 初始化 p0
    p0.age = 15;
    
    IntP(a, &p0);
    IntP(b, &p0);

    printf("Now, p1 来自 p0 , p1.name: %s,   age: %d\n", p1.name, p1.age);
    printf("Now, p2 来自 p0 , p2.name: %s,   age: %d\n", p2.name, p2.age);
    return 0;
}

3  以下是对这段代码的详细解释:

  1. 开头的几个注释是关于代码的运行环境、安装说明以及相关问题的解决链接。
  2. #include <stdio.h>:这是一个预处理指令,用于包含标准输入输出头文件,以便后续使用其中定义的函数,如printf
  3. #define a (&p1) 和 #define b (&p2):这是宏定义,将a定义为&p1(即p1的地址),将b定义为&p2(即p2的地址)。
  4. void strCopy(char *destination, char *source) 函数:这是一个自定义的字符串复制函数,通过循环逐个字符地将源字符串复制到目标字符串,直到遇到源字符串的结束符'\0',并在目标字符串末尾添加结束符。
  5. struct Person 结构体:定义了一个名为Person的结构体,包含两个成员:一个字符数组name用于存储名字,一个整数age用于存储年龄。
  6. 定义了三个struct Person类型的变量p0p1p2
  7. void IntP(struct Person* ptrPerson1, struct Person* ptrPerson2) 函数:该函数用于将第二个参数所指向的结构体的成员值复制到第一个参数所指向的结构体中,包括字符串成员name和整数成员age
  8. int main() 函数:这是主函数,程序的入口点。
  9. strCopy(p0.name, "Asdf"); :初始化p0结构体中的name成员为"Asdf"
  10. p0.age = 15; :初始化p0结构体中的age成员为 15 。
  11. IntP(a, &p0); :将p0的成员值复制到p1
  12. IntP(b, &p0); :将p0的成员值复制到p2
  13. 最后通过printf函数输出p1p2的信息。

4 运行环境:

有的编译器不成功,以下可以

//online run c @:http:// https://www.onlinegdb.com/online_c_compiler
// DEV C++6.3安装 https://blog.csdn.net/WeiHao0240/article/details/113757133

本人没采用安装版本,不好设置,使用这个版本正常运行:https://github.com/Embarcadero/Dev-Cpp/releases/download/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Portable.7z


// hello world 范例: file- new- project- 选下面的hello world 和 点击 下面的选C

作者:真实义

物联沃分享整理
物联沃-IOTWORD物联网 » 使用C语言编写的简单结构体初始化示例(开发工具DEV C 6.3),学习如何初始化STM32的GPIO

发表回复