当前位置: 首页 > news >正文

潮州seo网站推广如何快速推广网上国网

潮州seo网站推广,如何快速推广网上国网,政府部门网站建设自查报告,网站的后台系统怎么进入还有没上车的吗 马上要开车了 不等了,开始发车 老司机,再稍我一个 车已经发动了 你等下一班车吧 车子运行中,大伙儿坐稳啦! Ⅰ 库函数中的assert_param 在STM8、STM32标准外设库,或者HAL库的stm8_conf.h、stm32_conf.h…

0?wx_fmt=gif

0?wx_fmt=png

还有没上车的吗

马上要开车了

不等了,开始发车


老司机,再稍我一个


车已经发动了


你等下一班车吧


车子运行中,大伙儿坐稳啦!

库函数中的assert_param

在STM8、STM32标准外设库,或者HAL库的stm8_conf.h、stm32···_conf.h文件中会看见如下一段代码

/* #define USE_FULL_ASSERT 1 */

#ifdef  USE_FULL_ASSERT

#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,则会宏定义:#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

相当于是一个条件语句。

此时,还需要我们实现assert_failed函数,如果不实现,则会报错(后面来讲具体如何实现)。


而在其他地方调用情况(如GPIO)

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)

{

  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  

  GPIOx->BSRR = GPIO_Pin;

}

调用assert_param的主要作用就是检测参数正确与否,即我们所说的断言。

assert_param详情

1.STM8S中的assert_param

细心的朋友会发现,STM8标准外设库stm8s_conf.h中开启了USE_FULL_ASSERT这个宏:

#define USE_FULL_ASSERT    (1)

开启USE_FULL_ASSERT这个宏,就意味着要实现assert_failed((uint8_t *)__FILE__, __LINE__))这个函数;


那么我就在main.c文件下,按照官方的例程实现了assert_failed函数:

#ifdef USE_FULL_ASSERT   //断言(参考官方)

void assert_failed(u8* file, u32 line)

{

  while (1)

  {

  }

}

#endif


2.STM32中的assert_param

在STM32标准外设库,HAL库中的USE_FULL_ASSERT这个宏是被屏蔽了的。故程序运行#define assert_param(expr) ((void)0)

也就是没有做任何处理。

我之前提供的例程中,为了不动官方代码,assert_param这个函数都是没有使用的。

3.assert_failed((uint8_t *)__FILE__, __LINE__))

看到这个函数,就要说下__FILE__和__LINE__这两个标准定义。

__LINE__ :正在编译文件的行号

__FILE__ :正在编译文件的文件名

还不懂的同学,建议参考之前的文章【ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)】。

而上面只是申明,函数具体的实现还需要自己实现。理解了上面两个参数,相信大家都会知道如何实现了。需要根据自己项目情况来实现。常规举例:

void assert_failed(uint8_t* file, uint32_t line)

{

  printf("Error code in file:%s,line:%u\r\n",file,line);

}

这条语句在调及产品出厂之前测试是很有必要的,方便分析问题所在。正式推出版本,不定义USE_FULL_ASSERT这个宏既可以关闭了。

最后

微信搜索“EmbeddDeveloper” 或者扫描下面二维码、关注,在我的底部菜单查看更多精彩内容!

0?wx_fmt=gif

0?wx_fmt=jpeg

0?wx_fmt=gif

长按识别二维码 关注

不求赞赏  只求点赞、点广告给与支持!

http://www.hkea.cn/news/956786/

相关文章:

  • 北京丰台区网站建设游戏推广赚佣金的平台
  • 网站没排名怎么办搜索引擎广告优化
  • wordpress内容主题模板网络网站推广选择乐云seo
  • 电子元器件商城网站建设百度开户怎么开
  • 企业网站开发基本流程百度博客收录提交入口
  • 甘特图模板关于网站建设微信营销模式
  • 网站建设的swot分析长尾关键词挖掘精灵
  • 发布自己的做家教的网站网店运营推广登录入口
  • b s网站系统如何做性能测试百度推广运营怎么做
  • 洛阳seo外包公司费用seo的中文意思
  • 政府网站建设遵循的原则seo网站内容优化
  • java做网站具体步骤邵阳seo优化
  • 自己做的网站如何放进服务器今天今日头条新闻
  • 男装网站的网站建设背景惠州seo按天计费
  • 如何快速提高网站排名互联网项目推广
  • icp备案网站名称更改成都网站设计
  • 企业网站建设需求分析seo排名资源
  • python基础教程雪峰东莞搜索seo网站关键词优化
  • b2b网站开发供应商小程序开发教程全集免费
  • 用自己的手机做网站外链网站是什么
  • 市场调研公司介绍网站推广优化公司
  • 玉溪人民政府网站建设现状新网站seo
  • 湖南餐饮网站建设2023北京封控了
  • 重庆网站设计人员外贸网站搭建推广
  • 局域网内的网站建设西安网站建设公司排名
  • 普通网站报价多少中南建设集团有限公司
  • 蚌埠做网站哪家好全网营销国际系统
  • 沈阳市网站制作谷歌香港google搜索引擎入口
  • 做美食网站的背景高端网站建设制作
  • 文件什么上传到wordpress泉州seo技术