为了账号安全,请及时绑定邮箱和手机立即绑定

以下这个assert是什么意思?

以下这个assert是什么意思?

qq_遁去的一_1 2022-10-02 13:09:36
typedef struct{__IO uint32_t CRL;__IO uint32_t CRH;__IO uint32_t IDR;__IO uint32_t ODR;__IO uint32_t BSRR;__IO uint32_t BRR;__IO uint32_t LCKR;} GPIO_TypeDef;#define GPIOF_BASE (APB2PERIPH_BASE + 0x1C00)//定义了一个偏移地址#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE)//请问这句是什么意思?#define GPIO_LED GPIOFtypedef struct{uint16_t GPIO_Pin;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef;GPIO_InitTypeDef GPIO_InitStructure;GPIO_Init(GPIO_LED, &GPIO_InitStructure);/*关于这两个实参,照下面的声明看第1个是一个指向GPIO_TypeDef结构的指针,那么具体到GPIO_LED也就是上面问的那句define是什么意思?第2个实参是把GPIO_InitTypeDef结构的变量GPIO_InitStructure的首地址传进去?*/void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));}这个assert是什么意思?是说(GPIO_InitStruct->GPIO_Mode)只要为下面声明中的任一项就不终止程序往下执行?#define IS_GPIO_MODE(MODE)(((MODE) == GPIO_Mode_AIN) || ((MODE) == GPIO_Mode_IN_FLOATING) || \((MODE) == GPIO_Mode_IPD) || ((MODE) == GPIO_Mode_IPU) || \((MODE) == GPIO_Mode_Out_OD) || ((MODE) == GPIO_Mode_Out_PP) || \((MODE) == GPIO_Mode_AF_OD) || ((MODE) == GPIO_Mode_AF_PP))
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
意思是:IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)这个判断条件必须为真,否则程序就会进入死循环。

一般assert用来判断必须为真的一些条件,防止程序出现意外错误。
例如:
assert(汽车有4个轮子)//这个是必须成立的条件
开汽车

查看完整回答
反对 回复 2022-10-06
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

#define GPIOF ((GPIO_TypeDef *) GPIOF_BASE)

//把一个数值强制转换成指针类型

GPIO_Init(GPIO_LED, &GPIO_InitStructure);

//函数调用,第一个参数为指向GPIO_TypeDef类型的地址,第二个参数为指向GPIO_InitTypeDef
类型的地址

assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));

//assert,俗称断言,即假定某些条件必为真。如果在程序运行过程中断言的条件不幸的为假,则会发生assert中断,会提示哪个文件哪一行发生了assert错误。

查看完整回答
反对 回复 2022-10-06
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我绝对要是不真,就直接终止

查看完整回答
反对 回复 2022-10-06
  • 3 回答
  • 0 关注
  • 119 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号