STM32:stm32f10x_conf.h 文件中配置是否使用“断言”编译选项

1、stm32f10x_conf.h 中关于断言的代码
#ifdef  USE_FULL_ASSERT

/**
 * @brief assert_param 宏用于函数的输入参数检查
* @param expr:若expr 值为假,则调用assert_failed 函数
* 报告文件名及错误行号
 * 若expr 值为真,则不执行操作
  **/
  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* 错误输出函数 ------------------------------------------------------- */
  void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

2、分析说明

         在ST 标准库的函数中,一般会包含输入参数检查,即上述代码中的“assert_param”宏,当参数不符合要求时,会调用“assert_failed”函数,这个函数默认是空的。
         实际开发中使用断言时,先通过定义USE_FULL_ASSERT 宏来使能断言,然后定义“assert_failed”函数,通常我们会让它调用printf 函数输出错误说明。使能断言后,程序运行时会检查函数的输入参数,当软件经过测试,可发布时,会取消USE_FULL_ASSERT宏来去掉断言功能,使程序全速运行。

3、代码分析

        这里的“assert_param”实际是一个宏,在库函数中它用于检查输入参数是否符合要求。这段代码的意思是,假如我们不定义“USE_FULL_ASSERT”宏,那么“assert_param”就是一个空的宏(#else 与#endif 之间的语句生效),没有任何操作。从而所有库函数中的assert_param 实际上都无意义,我们就当看不见好了。
       假如我们定义“USE_FULL_ASSERT”宏,那么“assert_param”就是一个有操作的语句(#if 与#else 之间的语句生效),该宏对参数expr 使用C 语言中的问号表达式进行判断,若expr 值为真,则无操作(void 0),若表达式的值为假,则调用“assert_failed”函数,且该函数的输入参数为“__FILE__”及“__LINE__”,这两个参数分别代表 “assert_param”宏被调用时所在的“文件名”及“行号”。

       但库文件只对“assert_failed”写了函数声明,没有写函数定义,实际用时需要用户来定义,我们一般会用printf 函数来输出这些信息。

void assert_failed(uint8_t* file, uint32_t line)

{

       printf(“\r\n 输入参数错误,错误文件名=%s,行号=%s”,file,line);

}

### 回答1: 这三个文件都与 STM32F10x 系列单片机的断相关。 - stm32f10x_conf.h:该文件定义了 STM32F10x 系列单片机的断优先级分组和断向量表基地址等配置。需要根据具体的项目需求进行配置。 - stm32f10x_it.c:该文件断服务程序(Interrupt Service Routine,ISR)的源文件,其包含了各个断的具体处理函数。需要根据具体的断类型在该文件定义对应的 ISR。 - stm32f10x_it.h:该文件断服务程序的头文件,其声明了各个 ISR 的函数原型。需要在 stm32f10x_it.c 文件包含该头文件。 总之,这三个文件STM32F10x 系列单片机断处理的关键文件,需要仔细配置和实现。 ### 回答2: stm32f10x_conf.h、stm32f10x_it.c和stm32f10x_it.h都是针对ST公司的STM32F10x系列微控制器的配置断处理的文件。 首先,stm32f10x_conf.h是一个配置文件,用于配置STM32F10x系列微控制器硬件资源的初始化设置。该文件包含了各种宏定义和配置选项,以便用户可以根据需要进行硬件资源的配置。例如,该文件可以配置GPIO引脚的初始化设置、USART串口通信的波特率等。 其次,stm32f10x_it.c是一个断处理文件,用于处理STM32F10x系列微控制器的断事件。该文件包含了各种断服务函数(Interrupt Service Routine,简称ISR),当出现相应的断事件时,相应的ISR将会被自动调用。用户可以根据自己的需求,在stm32f10x_it.c文件编写相应的ISR,以执行所需的任务。例如,当出现USART接收断时,用户可以编写相应的ISR用于处理接收到的数据。 最后,stm32f10x_it.h是一个断处理的头文件,用于声明STM32F10x系列微控制器使用断函数。用户可以根据自己的需求,在该文件进行断函数的声明。通常情况下,该文件会包含stm32f10x_conf.h文件,以便获取相关配置信息。 综上所述,stm32f10x_conf.h、stm32f10x_it.c和stm32f10x_it.h是针对STM32F10x系列微控制器的配置断处理的文件,用于配置硬件资源的初始化和处理断事件。通过这些文件使用,可以有效地管理STM32F10x系列微控制器的硬件资源并实现相应的功能。 ### 回答3: stm32f10x_conf.h是STM32F10x系列的配置文件,这个文件定义了STM32F10x器件的所有寄存器和外设的基本配置信息。在该文件,我们可以根据需要选择要使用的外设和配置其相关参数,例如时钟配置断向量表配置等。通过修改这个文件的宏定义和其他配置选项,我们可以对STM32F10x进行定制化的配置stm32f10x_it.c和stm32f10x_it.h是处理断的文件stm32f10x_it.c文件包含了处理各种断的函数,而stm32f10x_it.h文件则是它的头文件,用于声明这些断函数。这些文件是由STM32标准外设库提供的,它们定义了断函数的框架,并提供了断处理的一些常用函数和数据结构。 在使用STM32F10x系列的MCU进行开发时,我们通常需要根据需求来处理一些特定的断,例如定时器断、串口断等。我们可以在stm32f10x_it.c编写这些断函数的具体实现,并在stm32f10x_it.h进行声明。然后,在主程序,我们可以根据需要直接调用这些断函数。 这些文件的提供给我们开发STM32F10x系列的MCU带来了很大的便利性。通过配置stm32f10x_conf.h文件,我们可以轻松地选择和配置所需的外设,并在stm32f10x_it.c文件编写和处理断函数,实现各种功能的逻辑。 总之,stm32f10x_conf.h、stm32f10x_it.c和stm32f10x_it.h是STM32F10x系列MCU开发的重要文件,它们提供了配置外设和处理断的框架和函数,方便开发者进行STM32F10x系列MCU的开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值