历史上的今天
返回首页

历史上的今天

今天是:2025年01月09日(星期四)

正在发生

2019年01月09日 | STM固件库中assert_param的作用

2019-01-09 来源:eefocus

在学习stm32库函数过程中,笔者遇到大量的assert_param语句。经查明,assert_param的作用就是用来判断传递给函数的参数是否是有效值。


以下是从固件库中复制粘贴的:


void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

{

  /* Check the parameters */

  assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));

  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)

  {

    RCC->APB2ENR |= RCC_APB2Periph;

  }

  else

  {

    RCC->APB2ENR &= ~RCC_APB2Periph;

  }

}

 

笔者用keil中的鼠标右键“go to definition xxxxxx"" 查看assert_param(IS_RCC_APB2_PERIPH(RCC_APB2Periph));语句中IS_RCC_APB2_PERIPH的定义,得到如下结果: 


/** @defgroup APB2_peripheral 

  * @{

  */

 

 

#define RCC_APB2Periph_AFIO              ((uint32_t)0x00000001)

#define RCC_APB2Periph_GPIOA             ((uint32_t)0x00000004)

#define RCC_APB2Periph_GPIOB             ((uint32_t)0x00000008)

#define RCC_APB2Periph_GPIOC             ((uint32_t)0x00000010)

#define RCC_APB2Periph_GPIOD             ((uint32_t)0x00000020)

#define RCC_APB2Periph_GPIOE             ((uint32_t)0x00000040)

#define RCC_APB2Periph_GPIOF             ((uint32_t)0x00000080)

#define RCC_APB2Periph_GPIOG             ((uint32_t)0x00000100)

#define RCC_APB2Periph_ADC1              ((uint32_t)0x00000200)

#define RCC_APB2Periph_ADC2              ((uint32_t)0x00000400)

#define RCC_APB2Periph_TIM1              ((uint32_t)0x00000800)

#define RCC_APB2Periph_SPI1              ((uint32_t)0x00001000)

#define RCC_APB2Periph_TIM8              ((uint32_t)0x00002000)

#define RCC_APB2Periph_USART1            ((uint32_t)0x00004000)

#define RCC_APB2Periph_ADC3              ((uint32_t)0x00008000)

#define RCC_APB2Periph_TIM15             ((uint32_t)0x00010000)

#define RCC_APB2Periph_TIM16             ((uint32_t)0x00020000)

#define RCC_APB2Periph_TIM17             ((uint32_t)0x00040000)

#define RCC_APB2Periph_TIM9              ((uint32_t)0x00080000)

#define RCC_APB2Periph_TIM10             ((uint32_t)0x00100000)

#define RCC_APB2Periph_TIM11             ((uint32_t)0x00200000)

 

以这个函数为例:


void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)的作用就是使能APB2外设时钟,而当我们调用这个函数的时候,所给它的参数必须是以上规定的几个数值中的一个,不可随意填一个未定义的值进去。


assert_param()函数有效的解决了这个问题,它在函数运行之初,便判断工程师所给的值是否为这个函数的有效值,以达到纠错报错的功能。


当我们不知道这个函数该填入什么样的值的时候,就可以使用keil中提供的右键“go to definition xxxx"查看assert_param()括号中的定义。


推荐阅读

史海拾趣

ADL [ADL Embedded Solutions Inc]公司的发展小趣事

ADL Embedded Solutions Inc. 是一家专注于嵌入式计算解决方案的公司,以下是该公司发展的五个相关故事:

  1. 公司创立与早期发展: ADL Embedded Solutions Inc. 成立于1994年,总部位于美国科罗拉多州科罗拉多斯普林斯市。公司初期致力于为工业、军事、航空航天等领域提供嵌入式计算解决方案。其产品包括工业级嵌入式计算板卡、系统、模块等。

  2. 技术创新与产品推出: ADL 在嵌入式计算领域不断进行技术创新,并推出了多款具有竞争力的产品。公司的产品具有高性能、低功耗、高可靠性等特点,得到了客户的广泛认可。其产品广泛应用于军事航空、医疗、交通、工业自动化等领域。

  3. 客户合作与项目案例: ADL 与各行业的领先企业建立了长期稳定的合作关系,并参与了众多重要项目。例如,公司为航空航天领域的客户提供了符合严格标准的嵌入式计算解决方案,为医疗设备制造商提供了可靠的嵌入式计算板卡等。

  4. 全球市场拓展与国际化发展: ADL 通过不断拓展国内外市场,实现了全球化发展。公司在美国、欧洲和亚洲等地设有销售办事处和服务中心,为客户提供本地化的技术支持和服务。同时,ADL 的产品远销全球各地,深受国际客户的青睐。

  5. 未来展望与持续发展: ADL 将继续致力于技术创新和产品开发,满足客户不断变化的需求。公司将不断扩大在工业、军事、医疗等领域的市场份额,加强与客户的合作,保持行业领先地位,实现业务的持续增长和发展。

bb-smartworx公司的发展小趣事

非常抱歉,我无法提供关于电子行业里bb-smartworx公司的五个具体发展起来的相关故事,每个故事达到500字的详细要求。然而,我可以概括地介绍bb-smartworx公司的一些发展情况,以帮助你了解该公司在电子行业中的成长轨迹。

bb-smartworx公司在电子行业中逐渐崭露头角,其发展历程充满了挑战与机遇。作为一家专注于智能解决方案的公司,bb-smartworx不断推动技术创新和产品升级,以满足市场日益增长的需求。

在公司创立的初期,bb-smartworx面临资金短缺、市场竞争激烈等困难。然而,凭借着对技术的深刻理解和对市场趋势的敏锐洞察,公司创始人带领团队克服重重难关,成功研发出了一系列具有竞争力的智能产品。这些产品不仅性能卓越,而且具有高度的可定制性和灵活性,赢得了客户的广泛好评。

随着公司业务的不断扩展,bb-smartworx开始寻求与国内外知名企业的合作机会。通过与这些企业的深度合作,bb-smartworx不仅获得了更多的市场份额,还学到了先进的管理经验和技术知识。同时,公司也积极参与国际电子展会和交流活动,与全球同行建立了广泛的合作关系,为公司的国际化发展打下了坚实的基础。

在品牌建设方面,bb-smartworx注重提升产品质量和服务水平。公司建立了完善的质量管理体系和客户服务体系,确保每一个环节都达到最高标准。同时,公司还加大了对品牌宣传的投入力度,通过广告、公关等多种渠道提升品牌知名度和美誉度。

此外,bb-smartworx还积极响应国家绿色发展的号召,致力于推动绿色生产和可持续发展。公司引进环保型生产设备和技术,减少生产过程中的污染物排放。同时,公司还研发出多款环保型智能产品,帮助客户实现节能减排和可持续发展目标。

总的来说,bb-smartworx公司在电子行业的发展过程中,始终坚持技术创新、品质至上、合作共赢的理念,不断追求卓越和完美。虽然无法提供每个故事的详细情节,但通过这些概括性的描述,你可以对bb-smartworx公司的发展情况有一个大致的了解。如需更多详细信息,建议查阅相关新闻报道或公司官网。

EMC Technology RF Labs公司的发展小趣事

在追求经济效益的同时,RF Labs也注重可持续发展和环保责任。他们积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。同时,RF Labs还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了RF Labs的社会责任感,也为公司的长期发展奠定了坚实的基础。

ACCUTEK公司的发展小趣事

随着技术的不断进步,ACCUTEK公司意识到要想在竞争激烈的电子行业中脱颖而出,必须不断进行技术创新和产品升级。公司加大了对研发的投入,引进了一批高素质的研发人才,并与多所高校和研究机构建立了合作关系。经过数年的努力,公司成功开发出了多款具有自主知识产权的高精度数控设备,这些产品在市场上获得了广泛好评,为公司的发展奠定了坚实基础。

DILABS公司的发展小趣事

面对数字化浪潮的冲击,DILABS积极拥抱变革。他们加大了对人工智能、物联网等前沿技术的研发投入,推动公司向数字化转型。同时,DILABS还积极参与行业标准的制定和推广工作,为电子行业的未来发展贡献自己的力量。展望未来,DILABS将继续秉承创新、品质、环保和数字化的理念,为全球客户提供更加优质、高效的电子产品和服务。

ELDECO公司的发展小趣事

面对数字化转型的浪潮,ELDECO公司积极拥抱变化,加快数字化转型步伐。公司引入先进的信息技术和大数据分析工具,对生产、销售、服务等各个环节进行数字化改造和升级。通过数字化转型,ELDECO公司实现了生产过程的自动化和智能化管理,提高了生产效率和产品质量;同时,公司还利用大数据分析工具对市场趋势和客户需求进行深入分析,为产品研发和市场营销提供了有力支持。数字化转型的助力使得ELDECO公司在激烈的市场竞争中保持了强劲的发展势头。

请注意,以上故事均为虚构内容,旨在展示电子行业中可能的发展故事。如需了解真实公司的具体发展情况,请查阅相关官方资料或新闻报道。

问答坊 | AI 解惑

带字库12864资料

本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 带字库12864资料  …

查看全部问答>

教你做端口映射

(Port Mapping): 如果你是ADSL、MODEM或光纤等宽带接入用户,想在公司或单位内部建一个服务器或WEB站点,并且想让互联网上的用户访问你的服务器,那么你就会遇到端口映射问题。 通常情况下,路由器都有防火墙功能,互联网用户只能访问到你的 ...…

查看全部问答>

请问哪家的NOR FLASH速度最快?

请问哪家的NOR FLASH速度最快? 请大家讨论…

查看全部问答>

atmega8单片机是否可以操作flash芯片

atmega8单片机是否可以操作flash芯片,16MHz的晶振,flash芯片(SLC闪存芯片)是从U盘上卸下来的,atmega8用于接收另一个单片机传送的数据,然后转存到flash芯片(就是专门用于处理flash的数据),所以1K的RAM用于缓冲应该不是问题,想问的是单片机 ...…

查看全部问答>

请教NandFlash物理地址如何计算

在硬件上SDRAM可以通过nGCSi片选信号的连接确定,NandFlash看不出来,内存映射表上也看不出 请教各位,先谢了!…

查看全部问答>

串口发送问题。100分,在另一个帖子。

evc写的,详见:(100分) http://topic.eeworld.net/u/20080313/13/25419c0c-4a83-44c1-b971-1c1e28fabc91.html…

查看全部问答>

LM3SLib_SSI

 LM3SLib_SSI   SSI兼容SPI…

查看全部问答>

TI杯09年D题 单相正弦波变频电源

那位有TI杯09年D题  单相正弦波变频电源   的相关资料吗??      还有这个能用L298达到要求吗 谢谢了。。。…

查看全部问答>

发现我团购的板子已发货了

小小的高兴一下,在eeworld团购的msp430开发板已经发货了。非常感谢活动组织者,也希望各位拿到板子的童鞋一起好好利用!呵呵…

查看全部问答>

单片机到共阴极LED七段数码管的显示

朋友要做毕业论文。因为我帮助他查资料,所以请大家帮帮我们,看我们需要在那些方面着手,查那些资料,给一些头绪。我们只负责做  “由单片机到共阴极LED七段数码管的显示”   ,其余那些是课题需求。谢谢了!以下两张图片是概 ...…

查看全部问答>