头像-330650

KVIN

  • 广东省广州市
  • 单片机
  • 消费电子 工控电子

个人成就

获得 8 次赞

帮助过618人

宏定义后面为什么要加括号

不加括号可能会有优先级的问题,因为#define只是替换的作用

想弄一个步进电机的驱动板

需要经过驱动芯片,因为MCU是用来输出信号的,电机转起来是需要消耗功率的,MCU能输出的功率转不起来电机,电流太小

51单片机将查询方式改成中断方式应该怎么做?

查询方式就是在循环中过一会检测一下端口,过一会检测一下端口,中断方式就如果中断端口发生变化就产生中断事件,然后进入中断程序。因此你想改成中断方式的话,就需要将要检测的信号接入中断引脚,另外,注意51的中断方式。

单片机输出PWM需要形成控制回路吗?

如果只是输出PWM信号,不需要

【参与即领IC币】谈谈你从事的细分行业或所学专业的前景

大数据跟国内的AI大背景比较吻合,那就是算法纯软件了,嵌入式看你喜不喜欢硬件或者操作系统,嵌入式属于不温不火的,做嵌入式你未必能竞争得过电子,通信,自动化等这些弱电硬件专业,不过还是看你喜好,个人观点,看看就好

【参与即领IC币】谈谈你从事的细分行业或所学专业的前景

大学自动化专业,主要学弱电与控制,毕业之后阴差阳错,做的就是本专业的活,做电机矢量控制,电机行业目前的情势还好吧,行业的大趋势是有刷换无刷,无刷方波换无刷FOC,整个行业都在向FOC正弦波控制转,仿佛不搞FOC就像没搞过电机一样。所以跟着这个潮流做,市场还是蛮大的,因为电机是日常生活中随处可见又必不可少的,整个行业换电机的话,还是有钱赚,当然,还要看自己技术硬不硬了,专心修炼技术。

HAL库函数版本和库函数版本、寄存器版本之间是什么关系

还好吧,可能是写论文写多了,不知不觉就写这么多

HAL库函数版本和库函数版本、寄存器版本之间是什么关系

最原始的操作芯片的方式是:直接操作地址,在地址的基础上,芯片厂家一般都会封装一层寄存器,寄存器本质就是基地址+偏移地址的形势来进行封装,方便用户操作。然而使用寄存器方便了操作,即使是寄存器的名字起得比较通俗易懂,但碰到比较复杂的功能,要同时操作好多个寄存器配合,才能使用这个功能的话,寄存器就又有些麻烦了,于是就诞生了库,最开始ST推出的是标准库,也就是你所说的库函数版本,库的出现就大大简化了配置过程,让用户可以更快进行配置,只需要学习用那个函数就可以了,而且库函数的名字可以起得非常直接,按照功能起名字就可以。在近年来,ST专注于把生态做好,也就是说整个ST芯片的生态环境,为了提高可移植性,以及方便用户更加脱离硬件,更专注与软件开发,HAL库与CUBEMX应运而生,用户可以通过CUBEMX软件来直接进行图形化的配置,然后直接生成HAL库的程序,大大简化了芯片的初始化过程。当然,HAL库的臃肿也是无可避免的,因为HAL库首先的目标就是可移植性与脱离硬件,因此HAL库在一些地方上会比标准库更多一层封装,比如中断回调函数,HAL库把同类型的中断都全部归类到一起,调用一个回调函数,也就是又多了一层封装。由于HAL库的臃肿,ST又想办法开发了LL库,在CUBEMX5.0以上版本已经可以直接选择HAL库或者LL库,LL库的操作更加接近寄存器操作,而且与HAL库是可以同时存在的。当然HAL库与LL库还是有bug的,HAL经过这么多版本的更新,bug已经稍微少了点,LL库还是有待完善的。目前,ST已经明说了,以后不会再更新标准库,专注于HAL库,CUBEMX,因此,如果后续会经常使用ST的芯片,HAL库是有必要熟悉一下的。说到这,应该就会明白,在代码的执行效率上大致是这样的,直接操作地址无疑是最快的,其次是寄存器操作,其次是LL库操作,然后是标准库,然后是HAL库。针对于开发效率与执行效率,当然也是可以兼得的,HAL库的优势在于可以使用CUBEMX进行图形化配置,那么用这个进行功能初始化操作就会很快,很方便,在程序功能实现方面,使用寄存器或LL库,程序执行效率会更高,不过LL库还不是很完善,慎用吧