stm32
文章平均质量分 72
Davidysw
一个在青岛工作的嵌入式爱好者
展开
-
常用校验算法
常用校验算法:CRC16,和校验原创 2022-06-21 10:36:08 · 1374 阅读 · 1 评论 -
蓝牙模块使用笔记
一、疑问及解答1、蓝牙模块是怎么连接的呢?蓝牙分为主机和从机,主机具有搜索功能,可以通过搜索的列表连接从机,也可以通过从机的MAC地址进行连接。2、蓝牙模块从机被连接后,还可以被其他主机搜索到吗从机被主机连接到后,不能再被其他从机搜索到,断开连接后才会重新被搜索到。3、蓝牙模块可以一台主机连接多台从机吗大部分模块是具备这个功能的,这就是一主多从,大部分模块是支持一台主机连接7台一下从机的,通讯的数据包中会标识来自哪个的数据,向哪一台发送数据,可以提前配置。4、蓝牙模块可以既被主机连原创 2021-10-21 11:27:19 · 3785 阅读 · 0 评论 -
嵌入式Linux学习笔记(七)U-boot 使用
一、概述Linux 系统要启动需要通过 bootloader 程序引导,也就说芯片上电以后先运行一段 bootloader 程序。这段 bootloader 程序会先初始化 DDR 等外设,然后将 Linux 内核从 flash(NAND,NOR FLASH,SD,EMMC 等)拷贝到 DDR 中,最后启动 Linux 内核。...原创 2021-09-23 10:02:44 · 1023 阅读 · 0 评论 -
嵌入式Linux学习笔记(六)TF-A 使用
一、概述TF-A :ARM 可信固件(Arm Trusted Firmware),用于配合TrustZone硬件方案(处理安全问题的硬件解决方案)。使用正点原子提供的TF-A、uboot、Linux kernel 等源码即可。传统的 linux学习中不需要 TF-A 的,只需要 uboot 和 Linux Kernel。tf-a-stm32mp-2.2.r1-r0 支持 ST 所有的 MP1 芯片,也支持各种启动方式。...原创 2021-08-26 11:20:16 · 2395 阅读 · 0 评论 -
嵌入式Linux学习笔记(五)STM32MP1启动
一、概述STM32MP1内部没用flash,系统及程序都是存放在外部 Flash (EMMC、SD、NAND、NOR),也可以通过USB、UART启动。启动模式:原创 2021-08-24 15:17:39 · 974 阅读 · 0 评论 -
嵌入式Linux学习笔记(四)开发环境搭建
U-Boot、Linux Kernel和 rootfs 这三者一起构成了一个完整的 Linux 系统。一、Ubuntu 和 Windows 文件互传1、开启 Ubuntu 下的 FTP 服务-安装 FTP 服务sudo apt-get install vsftpd修改/etc/vsftpd.conf重启 FTP 服务sudo /etc/init.d/vsftpd restart2、Windows 下 FTP 客户端安装FileZilla,免费的 FTP 客户端软件(http.原创 2021-08-23 10:47:39 · 698 阅读 · 0 评论 -
嵌入式Linux学习笔记(三)Linux C编译/Makefile基础
一、原创 2021-08-19 16:21:04 · 293 阅读 · 0 评论 -
迪文工控触摸屏使用modbus功能
最近手里有个项目要求使用的是迪文触摸屏,与从机直接通讯,使用的是modbus协议,记录一下使用笔记。一、开发环境屏幕型号:DMT48270C043_15WT开发软件:DGUS Tool V7.388.exebin文件编辑软件:010Editor.exemodbus 通讯:屏幕默认串口4,485二、注意事项1、DWIN_SET文件夹中应有的文件特别注意需要有DWINOS_T5_Modbus_V7.bin这个文件,这可能属于一个app内核文件吧,可能资料发给我的太多了,挨个试,试到这个好用.原创 2021-06-17 16:25:29 · 4852 阅读 · 1 评论 -
水下定位算法笔记
由于项目需求,需要进行对水下设备的定位(几千米深),为此又研究了一下水下定位方式,水下定位与陆地平面定位有少许差别但原理相通。一、概述水下定位系统包括长基线定位系统(LBL)、短基线定位系统(SBL)和超短基线定位系统(USBL)。1、LBL(长基线)水声定位LBL(长基线)水声定位采用的同样是测距定位技术,通过时间测量得到目标与每个水声换能器之间的距离,通过计算确定目标的相对位置。而与短基线水声定位不同的是 LBL(长基线)水声定位的水上收发装置只有一个水声换能器,而水声换能器组是.原创 2021-05-14 13:53:13 · 9985 阅读 · 2 评论 -
USB(CH376)使用笔记-U盘的数据读写
使用USB的数据导出功能,一种方式直接使用MCU的USB外设(且具有USB HOST)功能,MCU作为主机读取从机U盘;另一种方式,使用一个外置芯片,类似CH376这种(SPI接口或串口),芯片集成了文件系统和磁盘驱动,直接实现对U盘或SD卡的文件读写。一、概述CH376 是文件管理控制芯片,用于单片机系统读写 U 盘或者 SD 卡中的文件。同时可以使用 CH376 操作 USB 键盘鼠标,以及打印机等各种 USB 设备。CH376 支持三种通讯接口:8 位并口,SPI 接口或者异步串口;.原创 2021-04-19 14:08:55 · 6691 阅读 · 2 评论 -
USB(CH9350)使用笔记-HID设备刷卡机
项目需求添加个刷卡机设备,没有移植USB例程,直接使用了一个外置芯片(CH9350),无需驱动还是挺稳定的;这个芯片我只使用了其中的一个功能:USB的HID数据转为串口数据,使用的下位机模式,还有许多其他功能具体看手册,开发过程中不太方便的地方是输出的串口数据加了协议,并不是完全的透传,出来的数据解析一下就行。如果MCU内部不具备USB外设,或不想使用MCU内部的USB,相关USB的处理方案在 南京沁恒 应该都能找到,个别芯片还有测试板可以申请。相关USB的文档去官网下载就行,非常方便,其他USB的.原创 2021-04-19 10:50:42 · 2370 阅读 · 0 评论 -
STM32电源管理笔记
一、电源管理STM32 默认VDD供电引脚高于1.72V上电复位,低于1.68V掉电复位。上电电压和掉电电压值是可以配置的,通过修改选项字节,在程序运行前对flash的某些地址做了修改。可编程电压检测器 PVD,会向内核产生一个 PVD 中断(EXTI16 线中断)以使内核在复位前进行紧急处理,使在掉电前在中断中做一些紧急的数据处理。STM32 的电源系统:二、低功耗STM32 具有运行、睡眠、停止和待机四种工作模式。低功耗平常能用到睡眠模式和停止模式。1、睡眠模式在睡眠模原创 2021-03-08 11:24:25 · 1086 阅读 · 0 评论 -
STM32CubeMX使用笔记
目录一、基础工程配置1、配置晶振2、配置时钟3、配置程序下载仿真接口(SW:Serial Wire)4、引脚状态配置5、输出工程配置(不能中文)6、生成代码工程二、基础外设配置1、配置串口USART12、配置RTC一、基础工程配置1、配置晶振Disable(使用内部晶振)BYPASS Clock Source(旁路时钟源,直接从外界导入时钟信号)Crystal/Ceramic Resonator(晶体/陶瓷晶振,使用外部晶振)2、配置时钟3、配置程序下载仿真接口(SW:Serial Wir原创 2021-03-01 15:25:17 · 1138 阅读 · 1 评论 -
PCB设计学习笔记(五)做个Mini小车
工作之余学习了一下画PCB,做了一个简单的小车,主要目的学完新的知识实践一下,做的比较粗糙,但了解了整个画板的过程。总结:小车能动 O(∩_∩)O哈哈~。 Mini小车 一、手柄芯片:STM32F103C8;通讯模块:NRF24L01;电池:2节5号电池;摇杆:10K摇杆;右边是油门,右边是方向,4个按键看心情写几个功能,漂移啥的还是可以的,毕竟四轮独立驱动,悬挂是只.原创 2020-12-01 15:28:25 · 2188 阅读 · 6 评论 -
Git使用笔记
一、本地操作安装步骤先安装git官网安装包,再安装小乌龟辅助工具。创建本地版本库创建一个空文件夹,然后右键“Git在这里创建版本库”,并显示隐藏文件添加文件到版本库历史日志查看修改记录历史日志查看修改记录—比较版本差异按住ctrl键选择两个版本,右键比较版本差异查看版本库中有哪些文件右键版本库管理器删除后还原文件先删除hello2,可以通过右键还原回来把库中的文件删除但保留在本地添加一个工程到版本库将工程复制到版本库文件夹,右键“添加”忽略工程中部分文件夹原创 2020-05-28 09:16:39 · 310 阅读 · 0 评论 -
Rtthread学习笔记(二十三)RT-Thread内核-线程间通信
一、邮箱查看官方例程线程间通信RT-Thread 操作系统的邮箱用于线程间通信,特点是开销比较低,效率较高。邮箱中的每一封邮件只能容纳固定的 4 字节内容(针对 32 位处理系统,指针的大小即为 4 个字节,所以一封邮件恰好能够容纳一个指针)。典型的邮箱也称作交换消息,如下图所示,线程或中断服务例程把一封 4 字节长度的邮件发送到邮箱中,而一个或多个线程可以从邮箱中接收这些邮件并进行处理。1、邮箱的使用场合邮箱是一种简单的线程间消息传递方式,特点是开销比较低,效率较高。在 RT-Thread 操作原创 2020-05-22 08:33:03 · 1195 阅读 · 1 评论 -
Rtthread学习笔记(二十一)RT-Thread使用Esp8266,配置其AT Client URC数据处理
一、原创 2020-05-09 14:44:28 · 3358 阅读 · 0 评论 -
Rtthread学习笔记(二十)RT-Thread使用Esp8266,连接远端服务器IP端口发送数据
一、RT-Thread使用SDIO驱动SD卡挂载文件系统,添加bootloader,从SD卡中更新程序。原创 2020-05-08 13:28:32 · 7264 阅读 · 6 评论 -
Rtthread学习笔记(十九)RT-Thread Studio使用SDIO驱动SD卡挂载文件系统
一、rtthread使用SD卡1、配置RT-ThreadSetting开启SDIO,配置保存。2、开启board.h及stm32f1xx_hal_conf.h的宏定义3、使用STM32cube配置引脚及通讯参数生成配置文件,复制stm32f1xx_hal_msp.c中void HAL_SD_MspInit(SD_HandleTypeDef* hsd)到board.c的最后,...原创 2020-04-29 13:43:00 · 9002 阅读 · 8 评论 -
Rtthread学习笔记(十八)RT-Thread Studio添加freemodbus主机和从机
有些项目需要同时既做主机读取传感从机器的数据,然后在做从机整合数据与上层主控单元进行通讯,这时候就需要程序中即存在主机,又存在从机。这里就做下测试,主机用串口2,从机用串口3,然后将串口2与串口3连接,便可以进行仿真通讯验证。一、...原创 2020-04-28 10:34:49 · 3658 阅读 · 3 评论 -
Rtthread学习笔记(十七)添加freemodbus主机遇到写数据成功,读数据失败
解决办法:将原来115200的波特率修改为19200,然后主机读数据成功。一、modbus主机读数据失败现象添加freemodbus主机的时候遇到了奇怪的问题,记录下来。先说明一下情况,前两天按照RT例程把freemodbus主机移植完毕,添加modbus主机并且与上位机modbus slave从机的写指令(10)通讯成功,把数据实时写进了上位机从机,然后想起来忘记测试读指令(03)通讯是否...原创 2020-04-27 15:25:34 · 3399 阅读 · 18 评论 -
Rtthread学习笔记(十六)RT-Thread Studio添加freemodbus从机
一、添加freemodbus从机1、配置RT-Thread Settings2.开启board.h宏定义3.根据需求配置modbus通讯参数在main函数中初始化mb_slave_samlpe()4.验证下载modbus主机软件,安装到电脑上模拟从机设备。modbus主机下载链接记得从机这里将串口设定为了串口3,对应的引脚为PB10、PB11,从机地址01。既然验证从机...原创 2020-04-26 14:41:07 · 3492 阅读 · 3 评论 -
Rtthread学习笔记(十五)RT-Thread Studio添加freemodbus主机
一、添加freemodbus主机1.配置RT-Thread Settings保存并添加到工程中2.开启board.c宏定义3.根据需求配置modbus通讯参数配置参数都在sample_mb_master.c中4.验证下载modbus从机软件,安装到电脑上模拟从机设备。modbus从机...原创 2020-04-26 11:23:39 · 2497 阅读 · 4 评论 -
Rtthread学习笔记(十三)RT-Thread Studio开启硬件看门狗Watchdog
一、开启硬件看门狗Watchdog1、配置RT-Thread Settings2、开启stm32f1xx_hal_conf.h中的宏定义原创 2020-04-22 11:26:39 · 3443 阅读 · 0 评论 -
Rtthread学习笔记(十二)RT-Thread Studio开启硬件定时器HWTIMER
一、1.配置RT-Thread Settings2.开启board.c和stm32f1xx_hal_conf.h的宏配置3.用stm32cube配置TIM相关驱动内容这里只使用了定时器基础的计数功能,只需要进行简单的配置即可。得到void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)函数即可,放在board.c后面。void ...原创 2020-04-22 09:57:47 · 2723 阅读 · 1 评论 -
Rtthread学习笔记(十一)RT-Thread Studio开启PWM输出
一、1、配置RT-Thread Settings配置完毕记得保存配置2、开启board.h及stm32xxxx_hal_config.h的宏定义这里只需要先开启宏,函数复制看下面的步骤。3、复制PWM初始化函数初始化相关的函数有两种获取方式,第一种可以使用stm32cube配置工程,然后打开工程的stm32f1xx_hal_msp.c和main.c进行复制;第二种可以打开RTThr...原创 2020-04-21 15:16:08 · 6164 阅读 · 2 评论 -
Rtthread学习笔记(十)RT-Thread Studio的开启SPI1总线,挂载外部flash(W25Q64)做从线设备,使用fatfs elm文件系统
一、步骤1.打开RT-Thread Setting中软件模拟I2CW25Q64是华邦公司推出的大容量SPI FLASH产品,其容量为64Mb。W25Q64将8M字节的容量分为128个块,每个块大小为64K字节,每个块又分为16个扇区,每个扇区4K个字节。W25Q64的最小擦除单位为一个扇区,也就是每次必须擦除4K个字节。2.开启board.h/stm32F1xx_hal_config....原创 2020-04-20 14:37:24 · 3429 阅读 · 1 评论 -
Rtthread学习笔记(九)RT-Thread Studio的开启SPI1总线,外部flash(W25Q64)做从机设备
一、步骤1.打开RT-Thread Setting中软件模拟I2C2.开启board.h/stm32F1xx_hal_config.h中关于SPI的宏定义3.用stm32cube初始化spi相关内容复制cube中stm32f1xx_hal_msp.c中的void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)到board.c中,HAL库会自动初始化该...原创 2020-04-20 14:34:55 · 4768 阅读 · 3 评论 -
Rtthread学习笔记(八)RT-Thread Studio的软件I2C驱动开发
RT-Thread 的 I2C 设备驱动框架即支持硬件 I2C 也支持软件模拟 I2C。由于软件用起来比较方便,随便设置引脚,这里尝试开启一下软件I2C。一、步骤1.打开RT-Thread Setting中软件模拟I2C2.开启board.h中关于I2C的宏定义3.直接仿照官方例程初始化读写所需的I2C设备例子:/* * Copyright (c) 2006-2020, RT-...原创 2020-04-18 14:37:26 · 5674 阅读 · 2 评论 -
Rtthread学习笔记(七)RT-Thread Studio结合stm32cube ADC设备使用示例
1.配置RT-Thread Settings2.开启ADC1宏定义3.使用STM32CUBE配置参数void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)复制到board.c末尾处void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc){ GPIO_InitTypeDef GPIO_InitStruct;...原创 2020-04-17 10:37:47 · 2989 阅读 · 6 评论 -
Rtthread学习笔记(六)串口设备使用示例--波特率等通讯参数修改
一、串口通讯参数修改1.直接使用rt配置按照官方网站尝试着修改了一下串口2的波特率等参数,结果怪自己少添加一个头文件,一直查下面的错误,毫无头绪,然后发现需要包含#include <rtdevice.h>这个头文件,解决问题。#define SAMPLE_UART_NAME "uart2" /* 串口设备名称 */static rt_device_t ser...原创 2020-04-16 13:53:32 · 4845 阅读 · 0 评论 -
Rtthread学习笔记(五)串口设备使用示例--DMA 接收及轮询发送
一、DMA 接收及轮询发送当串口接收到一批数据后会调用接收回调函数,接收回调函数会把此时缓冲区的数据大小通过消息队列发送给等待的数据处理线程。线程获取到消息后被激活,并读取数据。一般情况下 DMA 接收模式会结合 DMA 接收完成中断和串口空闲中断完成数据接收。运行序列图如下图所示:二、步骤1.注册uart2 board.h2.开启DMA stm32f1xx_hal_conf.h...原创 2020-04-14 16:46:48 · 6634 阅读 · 7 评论 -
Rtthread学习笔记(四)串口设备使用示例--中断接收及轮询发送
一、串口设备使用示例–中断接收及轮询发送串口数据接收和发送数据的模式分为 3 种:中断模式、轮询模式、DMA 模式。在使用的时候,这 3 种模式只能选其一,若串口的打开参数 oflags 没有指定使用中断模式或者 DMA 模式,则默认使用轮询模式示例代码的主要步骤如下所示:1.首先查找串口设备获取设备句柄。2.初始化回调函数发送使用的信号量,然后以读写及中断接收方式打开串口设备。3.设置...原创 2020-04-14 14:23:45 · 9725 阅读 · 3 评论 -
STM32上添加bootloader+application,在外部flash中备份及升级程序
近期看到一篇关于bootloader的博文,亲手也尝试了一下,这里做下笔记,方便日后查看。一、工程配置使用的是stm32f103vet6芯片,512的ROM,64kRAM三、代码...原创 2020-03-11 15:58:41 · 6279 阅读 · 2 评论 -
STM32上驱动NRF24L01
文章目录一、模块工作流程1.接口电路2.NRF24L01状态机(1)主要有以下几个状态:(2)对 24L01 的固件编程的基本思路如下:3.Tx 与 Rx 的配置过程(1)Tx 模式初始化过程(2)Rx 模式初始化过程二、移植步骤1、硬件驱动2、SPI接口函数3、函数封装4、模块初始化4、应用函数、数据处理三、代码1、bsp_spi_nrf.c2、bsp_spi_nrf.h3、app_spi_nr...原创 2020-01-06 15:58:49 · 3506 阅读 · 1 评论 -
移植modbus rtu主机到STM32
近期看了硬石电子的关于modbus rtu部分的代码,其中包括主机从机,这里记录主机如何使用,做一下笔记,方便以后查看。一、移植步骤一共需要移植三个.c文件:bsp_usartx_fifo.c、modbus_slave.c、bsp_SysTick.c三个.h文件:bsp_usartx_fifo.h、modbus_slave.h、bsp_SysTick.h放置三个函数:Usart_FIF...原创 2019-12-06 15:59:15 · 2051 阅读 · 1 评论 -
移植modbus rtu从机到STM32
近期看了硬石电子的关于modbus rtu代码,写的很亲民,便于理解,在这里做一下笔记,方便以后查看。一、移植步骤一共需要移植两个.c文件:bsp_usartx_fifo.c、modbus_slave.c两个.h文件:bsp_usartx_fifo.h、modbus_slave.h放置两个函数:Usart_FIFO_Init(); MODS_Poll();开启两个宏:#d...原创 2019-12-06 13:21:28 · 1498 阅读 · 1 评论 -
单片机引脚模拟串口协议发送数据
使用引脚进行串口通讯,如果该引脚正好支持UART,直接初始化便可以使用,但真就是什么样的项目都有啊,这里就随便用了一个引脚进行模拟串口通讯协议进行数据传输。一、串口通讯协议串口数据包的基本组成:根据这个串口数据包的基本组成进行接口函数的编写即可实现串口数据的发送,传输波特率是由每位数据电平保持的时间决定的。二、代码#define sendinterval 10 //位时...原创 2019-12-04 14:16:45 · 1040 阅读 · 0 评论 -
STM32外部中断模拟输入捕获来测频率
STM32外部中断模拟输入捕获频率由于功能添加且板子已经定型的原因,在原来没有定时器输入捕获的引脚上添加频率检测,便使用了STM32的外部中断与定时器的配合来做简单测量。一、步骤:1、初始化引脚的外部中断,我这里用了PA11和PA12两个引脚,void EXTI_PA11_PA12_Config(void),需要注意的是频率检测只使用上升沿触发即可,如果测量占空比,则采用双边沿检测;2、初...原创 2019-12-04 09:32:07 · 5524 阅读 · 1 评论 -
stm32查看当前时钟
标准库stm32查看当前时钟:RCC_ClocksTypeDef get_rcc_clock;//初始化RCC_GetClocksFreq(&get_rcc_clock);//仿真查看get_rcc_clock中SYSCLK_Frequency仿真:HAL库stm32查看当前时钟:uint32_t sysclock = 0; //初始化sysclock = HAL_...原创 2019-12-02 14:52:40 · 2902 阅读 · 0 评论