STM32
文章平均质量分 80
sunny.Bit
这个作者很懒,什么都没留下…
展开
-
cola_os|cola_os(v1.2.0)版本发布增加国产单片机SWM181例程
300行代码实现操作系统cola_os v1.2.0版本发布原创 2022-03-28 21:35:04 · 16841 阅读 · 3 评论 -
嵌入式开发|阿里云物联网平台在线升级OTA
前言 OTA功能是产品的必备功能,但是如果又不想自己搭建平台,可以选择了阿里云的平台,基于阿里云对自己的设备进行版本管理。硬件准备1.广和通L610模组(opencpu,二次开发)代码实现1.升级流程图2.设备上报版本信息,如果有新版本会下发升级信息设备端通过MQTT协议推送当前设备OTA模块版本号到Topic:/ota/device/inform/${YourProductKey}/${YourDeviceName}。消息格式如下:{ "id": "...原创 2021-10-07 13:40:51 · 19853 阅读 · 0 评论 -
嵌入式开发|基于STM32模拟uart串口通信
记得点赞,有问题请留言前言 在嵌入式的开发中,经常要用到通过串口打印调试信息。有时为了节省成本,而没有多余的串口可用。因此打印调试信息可以采用:方式1:工程中添加SEGGER_RTT调试打印方式2:模拟串口UART工作原理 UART即通用异步收发器,是一种串行通信方式。数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。串行通信分为两种类型:同步通信方式和异步通信方式。但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样.原创 2021-03-30 16:50:33 · 5248 阅读 · 3 评论 -
嵌入式开发|基于STM32+移远EC200S(Cat.1 4G模组)AT指令实现多路MQTT和TCP同时连接
123原创 2021-03-14 11:49:38 · 28763 阅读 · 5 评论 -
嵌入式开发|基于STM32+GPRS(AT指令模组实现)实现MQTT通信
前言mqtt属于上层协议,与http属于同一层。建立在TCP之上的,因此所有的可以建立TCP通信的模组都可以实现mqttMQTT / HTTP————————————TLS————————————TCP————————————IP————————————数据链路层————————————物理层————————————硬件准备MCU:STM32F103RCGPRS模组:有人GM5工具:keil_MDKmqtt源代码:https://github.com/eclipse/pa原创 2021-02-25 16:30:28 · 5358 阅读 · 6 评论 -
嵌入式开发|嵌入式软件框架《二》前后台任务框架-cola os系统
系列文章目录嵌入式开发|嵌入式软件框架《一》常用的软件框架介绍与选择文章目录系列文章目录前言一、cola os程序框架1.cola_init2.cola_device3.cola_os task任务创建4.cola_os stime定时器创建前言在嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。在嵌入式软件开发中,程序架构主要分为三种。本教程中使用的框架为前后台和时间原创 2021-01-21 20:18:12 · 22902 阅读 · 3 评论 -
嵌入式开发|STM32工程中添加Bootloader实现串口程序下载
前言在产品开发中都会预留各种各样的程序升级的接口,为了防止程序出问题以后可以及时的更新程序,如果设备没有在线升级怎么办,无法远程升级程序。当然可以发程序下载器,让用户自己进行程序升级,如果这样又担心程序泄漏,而且一个STM32的程序下载器最少也需要30块。通过串口下载应该是最好的方式。实现方式通过外部按键或者串口指令让程序进入bootloader就可以进行程序下载了,bootloader一直存在,即使升级出问题可以再次升级。目前已经实现STM32F030C8T6的bootloader,使用Ymode进原创 2020-11-25 17:02:08 · 5459 阅读 · 5 评论 -
嵌入式开发|STM32工程中添加SEGGER_RTT调试打印
文章目录介绍代码添加说明打印调用log查看介绍RTT( Real Time Terminal)是 SEGGER 公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link 驱动 4.90 之后的版本都有这个软件哦。用 RTT 可以从目标 MCU 上输出信息的同时也可以非常高速的向应用程序发送信息,并且不影响 MCU 的实时性。其实现原理就是 J-link 与 MCU 共享内存,具体实现细节感兴趣的读者可以自己去查阅下资料,本文以应用为主。RTT 的工作框图如图 1 所示。MCU 通过 J-li原创 2020-10-31 20:20:50 · 1293 阅读 · 0 评论 -
LoRa开发|LoRa(SX1276/8)串口透传代码-将LoRa封装成单独的驱动(STM32)
一、前言嵌入式开发中我们要时刻保持代码的高效与整洁。2020年,开年注定不平凡,新型冠状肺炎的出现哪里也去不了,在家无聊写点东西吧。最近和一友人聊天,友人一直在抱怨学习lora没有前途,一直在纠结要不要学习,我只是默默的听着,然后笑一下当做什么都没听见。LoRa是一种通信技术不是一种职业,学不学他都在那里,而且LoRa本身也不难,spi接口,手册还是中文的。目前国内无线通信产品...原创 2020-01-31 13:54:14 · 25876 阅读 · 6 评论 -
STM32L例程03--串口输出usart及其printf重定向(基于cola_os)
一、实验目的1.实现串口信息打印。2.每1s钟打印一次信息。3.串口接收到数据,然后打印出来一、实验步骤1.CubeMax配置配置PA9,PA10为串口输出,导出工程。2.usart驱动创建串口驱动实现原理:中断接收到数据后通过事件通知应用层。stm32_usart.c#include "config.h"#include "stm32l0xx_...原创 2019-10-16 13:51:57 · 1867 阅读 · 0 评论 -
STM32L例程02--GPIO输出控制LED状态切换(基于cola_os)
一、实验目的1.实现GPIO口的输出。2.控制LED状态切换,500ms闪烁一次。一、实验步骤1.CubeMax配置配置PB1为输出,修改Lable为LED,导出工程。2.LED驱动创建stm32_led.c#include "config.h"#include "stm32l0xx_hal.h"#include "stm32_led.h"#includ...原创 2019-10-15 14:51:41 · 1125 阅读 · 0 评论 -
STM32L例程01--环境搭建Keil安装及CubeMax安装
一、工具下载百度云盘链接:链接:https://pan.baidu.com/s/1LALaBdwyq6MHxNbjJdp0uA提取码:ctzsCubeMax官网下载链接https://www.st.com/stm32cubemxSTM32L0没有标准库,只有HAL库,使用HAL库简单的方式是使用CubeMax进行开发。Keil官网下载链接http://www.ke...原创 2019-10-15 14:29:58 · 1062 阅读 · 0 评论 -
STM32--实测STM32L0低功耗停机(stop)模式-1.5uA(RTC开启+外部中断唤醒)
一、知识普及 STM32L0休眠模式:(3.0V供电)低速运行190uA/MHz 6μA低功耗运行模式,32kHz运行频率 3.2 μA低功耗睡眠模式,一个计时器工作 0.8 μA 停机模式:实时时钟(RTC)运行,保存上下文,保留RAM内容 0.3 μA 停机模式:无实时时钟运行,保存上下文,保留RAM内容 270nA待机模式:无实时时钟运行,保存后备寄存器...原创 2019-10-12 16:13:54 · 7417 阅读 · 2 评论 -
STM32--实测STM32F030F4P6待机(standby)功耗-3.7uA(RTC开启)
一、知识普及 STM32F030休眠模式: 1.休眠模式。 2.停机模式。 3.待机模式。官网文档:英文版官网文档:中文版休眠与唤醒方面文档写的很清楚了,在这不在详述。我们最关心的是休眠功耗,我们看下休眠功耗。官网文档:英文版实际功耗应该是两个表格中相应的电流相加,可见待机时如果开启RTC和看门狗,功...原创 2019-10-10 14:29:33 · 8264 阅读 · 5 评论 -
嵌入式开发--STM32上实现驱动注册initcall机制(类linux)
一、前言 上一节我们实现了代码应用层和硬件层的分离管理,但是代码中还存在一个问题,每个硬件如LED控制,GPIO口需要初始化,初始化函数bsp_led_init();这个函数需要在主函数中调用初始化,类似这样:void bsp_init(void){ bsp_rcc_init(); bsp_tick_init(); bsp_led_init();...原创 2019-10-10 13:21:06 · 1821 阅读 · 4 评论 -
嵌入式开发-C语言实现localtime()和mktime()
一、前言 在嵌入式的开发中很多时候会用到时间戳,会用到time.h中的localtime()和mktime(),这两个函数像STM32这种MCU中运行效率并不高,不使用标准库的情况下可以自己实现。二、代码utc_time.h#ifndef TIME_H#define TIME_H#ifdef __cplusplusextern "C"{#endif#...原创 2019-09-30 13:55:38 · 2660 阅读 · 1 评论 -
嵌入式开发--实现应用层和硬件层分层管理
一、前言 以STM32为例,打开网络上下载的例程或者是购买开发板自带的例程,都会发现应用层中会有stm32f10x.h或者stm32f10x_gpio.h,这些文件严格来时属于硬件层的,如果软件层出现这些文件会显得很乱。使用过Linux的童鞋们肯定知道linux系统无法直接操作硬件层,打开linux或者rt_thread代码会发现代码中都会有device的源文件,没错,这就是驱动...原创 2019-09-29 09:57:15 · 24133 阅读 · 6 评论