头像-211101

day_day

  • 广东省广州市
  • 单片机、嵌入式
  • 消费电子

个人成就

获得 202 次赞

帮助过518人

linux桌面版和嵌入式的驱动有什么不同?

一样的。桌面版就是增加了X11桌面,能够支持GPU图形渲染。桌面版驱动是可以直接用于同架构的嵌入式端。举个例子,RK3399既有嵌入式领域应用也有桌面应用,实际上他们的内核驱动是一样的,无界面的ubuntu server和有界面的ubuntu mate外设驱动是一样的。再比如X86架构的UP BOARD开发板,用的是嵌入式芯片Z8350,和PC机的I5很多驱动也是兼容的。但你肯定不可能用I5的驱动直接放到RK3399这种ARM芯片去用,架构不一样,很多时候linux本身驱动的构成方式都不同。当然你可以在PC机上部署好RK3399的内核,用交叉编译编译好,放进RK3399开发板里

STM32在时钟配置前,能配置GPIO么?

1-对于STM32来说,GPIO想要驱动本身也是需要时钟的。2-我猜测时钟启动失败是指系统时钟。但其实系统时钟和APB时钟都是HCLK来的,系统能跑起来GPIO就能够得到时钟,就能够初始化。换句话说,GPIO得不到时钟不能初始化,那就意味着系统本身也得不到时钟,程序跑不起来就不用提驱动GPIO了。但往往外部晶振启动失败都能够跳往内部晶振启动

如何确定单片机中断函数的执行时间?

精确的计算可以使用定时计数器,设置自加为1us,如果任务比较长可以设为100us或者1ms,在中断函数入口开启,出口停止获得。如果粗略计算可以通过KEIL一类的软件,设置断点,功能栏里能够查看程序运行的时间

关于单片机外部中断返回问题

C语言是没有办法在中断函数结束后指定跳转其他地方的,这个直接操作汇编可能可以实现,把中断前压栈的信息取出来却不赋值给PC指针,而是把switch的位置付给PC指针。但正常来说这种需求是很罕见的,可操作性也不高,因为单片机运行速度很快,所有完全可以等一个周期的代码运行完了再操作,在者你在一个周期没有运行完的情况下,强行跳转到新的一个周期很难保证这个过程中会不会出现什么野指针之类的麻烦。如果一个周期很长,你急需在按键之后立即中断他,要么采用实时操作系统,直接中断这个任务;要么在长等待的语句里面判断是否有新的按键时间,再使用goto语句/break语句跳转。

实现将同一TTL信号分别转换成RS232、RS485等

某宝常见的六合一串口模块是通过74锁存器实现这个功能的。你也可以通过禁用232、485的电源来实现

用WiFi模块将数据通过网络传递到手机

ESP8266可以作为主机也可以作为从机;可以作为AP发射WIFI也可以作为STATION接收WIFI,通过AT指令配置可以作为服务器,接受上位机TCP客户端的连接,以TCP流包的形式交换数据,单片机只需要向串口发送配置的AT指令后就可以直接发送数据,安卓手机连上ESP8266发射的热点后,两者处于同一网段,可以连上ESP8266的服务器通过的TCP组件接收和解析TCP包

萌新想请问一下单片机大佬怎么实现同一个按钮第一次按下和第二次

1-初始化定时器2-在判断到按下的瞬间,判断标志位,如果标志位为许可状态(标志位自己设定一个)启用定时器,并把标志位设定为不允许状态3-定时器达到后(10s)重新把标志位变成许可状态

MPU6050姿态参数如何通过HC05蓝牙模块出来,求指导代

1-如果是要自己实现安卓部分的显示有一定难度,需要安装Android studio,使用BluetoothAdapter操作蓝牙设备,监听串口透传服务的UUID,需要相当的Java能力和蓝牙知识。因此建议使用应用市场里面成熟的蓝牙串口APP。2-本质上HC05是蓝牙串口模块,如果你有win10系统电脑,可以购买一个不足十元的无线蓝牙usb适配器,BT05作为主机,从机win10系统连上这个蓝牙后,电脑会出现两个串口,这两个是虚拟串口,其中第二个是可用的。win7系统需要安装千月蓝牙。而安卓设备则不需要考虑这些,应用会直接处理串口数据输出输入。3-BT05可以通过AT指令配置,可以配置为透传模式4-连接上之后,​配置为透传模式后​​蓝牙与PC/安卓相当于串口直接连起来了,你使用单片机的串口往BT05里面发送,可以直接把数据传到PC/安卓上,反向也是如此。这时候串口应该如何收发设备蓝牙就该如何收发设备。5-在win10系统里面会比较方便,使用QT的QBluetooth组件访问蓝牙或者直接用QSerial访问串口都可以自定义处理数据。​