STM32H7学习继续(STM32H7系列4) MDK 下 C 语言基础复习

这篇博客介绍了STM32H7学习过程中的重要参考资料,特别是关于STM32H7的HAL库API,并复习了MDK下的C语言基础,包括GPIO操作、宏定义、条件编译、extern变量声明以及struct和typedef的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几个重要的参考网址

1.电子工程世界网
http://tags.eeworld.com.cn/tags/STM32H7
链接: link.
2.转:https://blog.csdn.net/simon223/article/list/2?t=1
链接: link.
————————————————
版权声明:本文为CSDN博主「Simon223」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Simon223/article/details/89533339

3.https://www.stmcu.com.cn/Designresource/design_list/cat_code/firmware_software/pro_cat/STM32/is_first/1
4.STM32Cube论坛
http://www.stm32cube.com/
链接: link.
5.https://blog.csdn.net/jxgz_leo/article/details/88600995

按照1网址的顺序学习

16. STM32H7必备的HAL库API(重要)

主要说了一些初始化,配置的函数,
暂时没怎么看懂,可能其他方面的知识到了瓶颈,先放一放

C复习

MDK 下 C 语言基础复习

  1. GPIOA->ODR 的状态:
    1)GPIOA->ODR &=0XFF0F; //将第 4-7 位清 0
    2)然后再与需要设置的值进行|或运算
    GPIOA->ODR |=0X0040; //设置相应位的值,不改变其他位的值
    3)GPIOA->ODR| = 1 << 5;//这个操作就是将 ODR 寄存器的第 5 位设置为 1
    4)GPIOA->ODR= (uint16_t)~(1<<3); //这样的作法设置第 3 位为 0
  2. define 宏定义
    #define 标识符 字符串
    “标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。例如:
    #define HSI_VALUE ((uint32_t)16000000)
    定义标识符 HSI_VALUE 的值为 16000000。这样我们就可以在代码中直接使用标识符
    HSI_VALUE,而不用直接使用常量 16000000,同时也很方便我们修改 HSI_VALUE 的值。
  3. #ifdef 和 #if defined 条件编译
    #ifdef 标识符
    程序段 1
    #else
    程序段 2
    #endif
    它的作用是:当标识符已经被定义过(一般是用#define 命令定义),则对程序段 1 进行编
    译,否则编译程序段 2。
  4. #if defined XXX1
    程序段 1
    #elif defined XXX2
    程序段 2

    #elif defined XXXn
    程序段 n

    #endif
    这种写法的作用实际跟 ifdef 很相似,不同的是 ifdef 只能在两个选择中判断是否定义,
    而 if defined 可以在多个选择中判断是否定义。
  5. extern 变量申明
    C 语言中 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示
    编译器遇到此变量和函数时在其他模块中寻找其定义
  6. struct
    struct _GPIO
    {
    __IO uint32_t MODER;
    __IO uint32_t OTYPER;

    };

定义了一个结构体 GPIO,这样我们定义变量的方式为:
struct _GPIO GPIOA; //定义结构体变量 GPIOA
6. typedef(用得比较多)
typedef struct
{
__IO uint32_t MODER;
__IO uint32_t OTYPER;

} GPIO_TypeDef;
Typedef 为结构体定义一个别名 GPIO_TypeDef,这样我们可以通过 GPIO_TypeDef 来定义结
构体变量:
GPIO_TypeDef _GPIOA,_GPIOB;
这里的 GPIO_TypeDef 就跟 struct _GPIO 是等同的作用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值