![](https://img-blog.csdnimg.cn/85b610f212434b8f88ef73946ecaafc2.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
单片机
文章平均质量分 70
包括STM32、GD32等8位、16位、32位单片机的开发记录
凉开水白菜
有嵌入式arm及qt软件开发方面三年经验,嵌入式qt领域专家,csdn/掘金平台优质作者,擅长嵌入式软硬件项目方案设计,qt界面开发,单片机程序设计等。
展开
-
【STM32】NRF24L01模块的收发调试
这里我是用了两块板子来做通信实验,这里我就直接贴发送端和接收端的.c.h文件,一个是用标准库写的一个是hal库写的,只是两块板子引脚不同代码大差不差;发送端.h文件发送端main函数接收端.c文件接收端.h文件接收端main函数总结:1、两个NRF24L01 通信的核心是知道对方的地址也就是RX_ADDRESS和TX_ADDRESS这两个数组,两个模块的地址可以相同,但通常情况下允许不同的地址通道设置完全相同的地址。2、发送和接收用户数据的宽度两端必须相同才能通信,如果一直没法通信检原创 2022-11-24 15:15:19 · 1487 阅读 · 0 评论 -
【FreeRTOS】中断管理
前面的章节多数的API使用都讲到中断专用和任务专用是分开的,为什么FreeRTOS会设计两套api函数呢?他们又有那些区别?原创 2022-11-10 15:04:17 · 1176 阅读 · 0 评论 -
【FreeRTOS】任务通知的使用
任务通知和信号量、队列、事件等用法相同,在任务之间进行数据传输或者事件传输对比队列和信号量等效率更高,因为任务通知的变量是跟随任务创建时创建的无需像队列事件一样创建结构体可以更节省内存;原创 2022-11-07 23:47:20 · 1264 阅读 · 0 评论 -
【FreeRTOS】事件组的使用
事件组与信号量类似,我们可以把事件组理解为一个整数(在FreeRTOSConfig.h文件中),用其中一位来表示一个任务的状态0-1,我们可以通过这些任务的组合来进行任务执行的判断标准;他与信号量不同的是事件组能针对1对多,多对多的任务,例如我们按键按下事件组可以通知多个任务开始执行,或者某个任务可以等待多个任务完成后在执行等;如果configUSE_16_BIT_TICKS是1,那么这个整数就是16位的,低8位用来表示事件。原创 2022-11-07 17:29:58 · 717 阅读 · 0 评论 -
【FreeRTOS】互斥锁的使用
可以看到互斥量的api和信号量的api是一样的,因为互斥量的本质是一个特殊信号量,但是需要注意互斥量不能在ISR中使用;互斥量的使用场景一般是在多个任务中操作同一个变量的时候会出现使用;互斥量是一种特殊的二进制信号量,使用互斥量时,先创建、然后去获得、释放它。:pdTRUE表示成功,如果二进制信号量的计数值已经是1,再次调用此函数则返回失败;如果计数型信号量的计数值已经是最大值,再次调用此函数则返回失败;: 返回句柄,非NULL表示成功。:信号量句柄,释放哪个信号量。:信号量句柄,释放哪个信号量。原创 2022-11-04 17:48:37 · 4371 阅读 · 0 评论 -
【FreeRTOS】信号量的使用
什么是信号量?什么是计数型信号量?什么是二进制信号量?以及互斥信号量和递归信号量信号也就是发出通知的信号,量表示信号发出的数量;让信号的数量没有限制的时候就是计数型信号量;当数量只有两种状态一种是有(1)一种是无(0)也就是二进制信号量;原创 2022-11-04 16:32:44 · 2501 阅读 · 0 评论 -
【FreeRTOS】队列的使用
基于 FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的;原创 2022-11-03 18:01:15 · 2094 阅读 · 0 评论 -
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
EasyLogger 是一款超轻量级 、高性能的 C 日志库,非常适合对资源敏感的软件项目,例如:IoT 产品、可穿戴设备、智能家居等等。相比 log4c、zlog 这些知名的 C 日志库,EasyLogger 的功能更加简单,提供给用户的接口更少,但上手会很快,更多实用功能支持以插件形式进行动态扩展。本章使用环境:虚拟机ubuntu1804 、正点原子stm32407探索者开发板、工程模板:HAL库 - 实验4 串口通信实验。...原创 2022-08-26 11:20:35 · 5195 阅读 · 0 评论 -
【嵌入式开源库】使用J-Link打印日志,让你节省一个打印串口
EGGER RTT支持使用J-link调试器输出来自目标微控制器的信息,也可以接收输入,并且在高速度交互的同时不会影响目标处理器的实时性,可以省掉平常打印日志用的串口。RTT工具支持 ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33 内核和瑞萨 RX100/200/600 内核。RTT工具的源码实现提供了完整的功能,可以自由使用。...原创 2022-08-10 19:17:38 · 1198 阅读 · 0 评论 -
学校实训密码锁设计(基于STC51单片机)报告
目录设计概述… 3选题的背景与意义… 3项目内容(51密码锁设计)… 3产品功能… 4方案论证… 4方案设计… 4方案实施… 5元件选择… 6设计过程… 11设计流程(代码)… 11电路仿真… 14PCB打板… 14元件购买… 15结论… 15设计概述选题的背景与意义 单片微型机简称单片机,它是在一片芯片上集成了中央处理部件,存储器、定时器/计数器和各种输入输出设备等接口部件。单片机是微机发展的一个重要的分支,自问世以来,性能不断地改善和提高,加之单片机具有集成度高、功能原创 2020-08-01 08:40:06 · 7147 阅读 · 0 评论 -
单片机学习之路一些常见的疑问也是我的个人学习总结
STM32的八种输入输出模式?输入模式上拉输入:通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平。下拉输入:把电压拉到GND。与上拉原理相似。浮空输入:引脚内部什么都不接,处于浮空模式下,电平状态是不确定的。外部信号输入什么,IO口就是什么状态。模拟输入:接收到的是连续的模拟信号,一般用于AD转换。输出模式:推挽输出:可以输出高低电平,连接数字器件。在stm32中推挽电路由两个MOS管组成:输出高电平时P-MOS管导通,引脚联通VDD(3.3v)。输出低电平时N-MOS原创 2020-08-01 08:46:46 · 9187 阅读 · 2 评论 -
嵌入式工程师以及C++程序员到公司就业需要掌握那些技术?
##嵌入式开发方向图森科技有限公司,嵌入式软件研发1、c/c++,python,Linux,shell,Makefile2、Linux下c/c++调试手段3、Linux多线程,进程通信,文件io操作4、socket编程tcp,udp,http网络协议5、232,485,can硬件通信6、加分项:内存优化经验以及OpenCV掌握,ros经验,有飞思卡尔比赛经验加分小马智行pony.ai 嵌入式开发1、Linux系统软件设计与开发2、主要开发Kernel,driver,middleware原创 2020-08-09 18:09:30 · 2033 阅读 · 0 评论 -
使用python清空esp8266的flash,方法超简单
首先电脑安装python环境然后使用pip安装esptool、pyserial两个库pip install esptoolpip install pyserial然后电脑连接esp8266并查看端口得到COM9然后我们使用命令esptool.py --port COM9 erase_flash完成原创 2021-03-01 17:02:19 · 1965 阅读 · 0 评论 -
esp8266-01s烧录AT固件方法以及遇到的问题总结
问题总结烧录工具:烧录WiFi固件工具:ESP_DOWNLOAD_TOOL固件下载:安信可固件点击直达这里给出天翼网盘的下载链接:下载链接(访问码:0mv8)事情的起因是因为esp8266连接串口一直串口发送数据这里图没有了,但是大概有一句blinker相关的,然后我就想起了以前给这个esp写过一个小爱同学点灯的程序,这里要做新的项目要用这个模块所以就准备重新烧录一个at固件。第一次烧录遇到esp不断给串口发送数据为乱码,经过更改串口波特率为76800可以看到串口接收到的数据为ets Jan 8原创 2021-03-29 14:06:42 · 9924 阅读 · 11 评论 -
STM32 ST-LINK Utility程序烧录方法
打开软件过后点击Target-》connect出现以下界面表示STlink链接成功如果出现没有检测到stlink的话,首先查看是否安装驱动程序,再重新插拔电脑usb口的stlink连接线(或者链接到主机后方的usb口)再重复以上步骤链接,链接成功过后再次点击Target然后点击AutoMatic Mode然后选择升级的HEX文件然后点击Start显示以上信息表示程序烧录完成软件官网下载比较麻烦这里附上下载链接(内容包含ST-Link驱动)https://cloud.189.cn/we原创 2021-07-01 09:47:40 · 13380 阅读 · 0 评论 -
stm32f4外设学习篇(代码集合)
stm32f4外设学习篇(代码集合)1、串口1.h文件2、串口2(RS485).c文件.h文件3、定时器(多路).c文件.h文件4、PWM.c文件.h文件5、窗口看门狗.c文件.h文件6、独立看门狗.c文件.h文件1、串口1.c文件#include "debug_usart.h"/** * @brief DEBUG_USART GPIO 配置,工作模式配置。115200 8-N-1 * @param 无 * @retval 无 */void Debug_USART_Config原创 2021-08-12 13:07:28 · 1895 阅读 · 0 评论 -
STM32CubeMX配置时钟无法使用高速外部时钟HSE
当我们使用STM32CubeMX生成工程的时候有时候无法选择外部时钟,情况如下图解决办法:配置RCCHigh Speed Clock(HSE)高速时钟Low Speed Clock (LSE)低速时钟CrystakCeramic Resonator 外部晶振时钟源BYPASS Clock Source 旁路时钟源这样就可以了......原创 2021-08-18 17:49:06 · 8220 阅读 · 2 评论 -
更换外部晶振RT-Thread中修改频率
使用STM32CubeMX生成一个标准工程,记得修改要更改的外部晶振,我这里是从原本的8MHz改成25MHz所以我这里要生成的工程的频率就修改为25MHz打开工程过后再main文件中找到这段代码复制下来/** * @brief System Clock Configuration * @retval None */void SystemClock_Config(void){ RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkI原创 2021-08-18 17:57:52 · 960 阅读 · 0 评论 -
STM32F103RC通过DHT11获取温湿度
文章目录bsp_dht1.cbsp_dht1.h例子下载bsp_dht1.c/** ****************************************************************************** * @file bsp_TimBase.c * @author stylle * @version V1.0 * @date 2021-xx-xx * @brief DTH11温湿度获取 ****************原创 2021-10-24 19:22:34 · 874 阅读 · 2 评论 -
【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪
MPU6050简介MPU-6000(6050)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。当连接到三轴磁强计时,MPU-60X0提供完整的9轴运动融合输出到其主I2C或SPI端口(SPI仅在MPU-6000上可用)。寄存器查询表格寄存器地址寄存器内容0X3BX轴加速度测量值高位0X3CX轴加速度测量值低位0X3DY轴加速度测量值高位0X3EY轴加速度测量值低位0X3FZ轴加速度原创 2022-04-07 17:43:01 · 13957 阅读 · 46 评论 -
【STM32】I2C练习,SHT3X温度传感器的数据读取
前言工程的配置可以参考我的上一篇文章,两个不同地址的传感器可以挂载在一条总线上也可以和我一样分别在两个总线上,配置方法是一样的,这里提供代码进行参考。【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪sht3x.c#include "sht3x.h"static int16_t Sht3xAddr = 0x44 << 1; // 读写位0x88SHT3XDATATYPE Sht3x_Data;int8_t Sensor_I2C1_Read(uint16_t DevAd原创 2022-04-07 17:47:58 · 2299 阅读 · 1 评论 -
【STM32】通过RTThread驱动W25QXXX
创建基于RTThread的项目工程,根据自己的情况创建,理论上stm32F(x)系列的单片机都是通用的代码;然后打开spi驱动并通过cubemx配置初始化spi的代码这里的代码是我用STM32CubeMx生成的,你们可以直接使用下面这段代码修改成自己的SPI端口和SPIx就省去配置了。void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle){ GPIO_InitTypeDef GPIO_InitStruct = {0}; if(spiHa原创 2022-04-11 11:40:33 · 1500 阅读 · 0 评论 -
【RTThread】修改Finsh打印串口波特率
这里需要注意得是一定要在hw_board_init初始化完成之后修改串口波特率。/* 串口设备句柄 */ static rt_device_t uart_device = RT_NULL; /* 查找系统中的串口设备 */ uart_device = rt_device_find("uart1"); // 这里 /* 串口配置结构体,使用serial.h的宏定义 */ struct serial_configure finsh_serial_config = R..原创 2022-04-24 13:33:20 · 1153 阅读 · 0 评论 -
【STM32】使用单片机DAC产生噪声群
前期准备软件平台:基于KEIL的HAL库开发硬件平台:正点原子STM32F4探索者开发板STM32F4 DAC 简介STM32F4 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。DAC可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。DAC 工作在 12 位模式时,数据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道,每个通道都有单独的转换器。在双 DAC 模式下,2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2原创 2022-05-06 14:07:06 · 1523 阅读 · 0 评论 -
【STM32】基于HAL库的360度编码器、摇杆代码编写
360度编码器、摇杆360度旋转编码器摇杆360度旋转编码器unsigned char cur_num = 0;//外部中断初始化void EXTI_Init(void){ GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOE_CLK_ENABLE(); //开启GPIOE时钟 GPIO_Initure.Pin=GPIO_PIN_2; //PE2 GPIO_Initur原创 2022-05-13 13:33:06 · 1683 阅读 · 2 评论