STM32程序解读,这段程序什么意思啊 能给我解释一下么

STM32程序解读,这段程序什么意思啊 能给我解释一下么,第1张

这是初始化GPIO的做法。

先把A口的时钟使能,再将其失能。这样A口就不能用了。

通常我们初始化也会这么写:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB

|RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD ,ENABLE)

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN

GPIO_Init(GPIOA, &GPIO_InitStructure)

GPIO_Init(GPIOB, &GPIO_InitStructure)

GPIO_Init(GPIOC, &GPIO_InitStructure)

GPIO_Init(GPIOD, &GPIO_InitStructure)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB

|RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD , DISABLE)

比你的句子多一个端口模式的配置 。

在keil Debug时你会从GPIO的寄存器看到,没有用到的IO都是这里初始化设置的模式。可见在你再次改动配置之前,IO都是按照上次的配置执行的。所以端口的模式我们也是有必要进行初始化的。

1、volatile 就是个关键字,代表该关键字具体数值会预想不到的被改变,避免编译器优化掉。更具体的理解可以在论坛上搜索。(解释很多字,这里不好打出来)

2、typedef也是一个关键字,其实就是给另外的变量换一个名字而已。

例如:typedef unsigned char uint8_t

后面你要定义一个unsigned char 型变量:

unsigned char a等同于uint8_t a有没有觉得后面的定义比前面更易读?

其实标准的命名是这样:uint8_t u8_a这样后面你用这个变量,时刻都清除这个变量是无符号占8个字节,这样就会大大避免数据溢出这个错误。

就是将一个IO口的电平变为它之前的相反电平,最重要的这句

(BitAction)(1-GPIO_ReadOutputDateBit(GPIOC, GPIO_Pin_3)

如果之前是0,那么1-0就是1;如果之前是1,那么1-1就是0;这是用库函数 *** 作的,内部怎样实现,你不需要知道,直接调用就行了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7814994.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存