烟雨江南、
码龄5年
关注
提问 私信
  • 博客:39,249
    39,249
    总访问量
  • 17
    原创
  • 1,393,589
    排名
  • 24
    粉丝
  • 0
    铁粉

个人简介:平时博客都是笔记,有错误忘大佬指出

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2020-04-14
博客简介:

guyuani的博客

查看详细资料
个人成就
  • 获得51次点赞
  • 内容获得42次评论
  • 获得401次收藏
  • 代码片获得325次分享
创作历程
  • 9篇
    2023年
  • 8篇
    2022年
成就勋章
TA的专栏
  • 嵌入式实用小方法
    2篇
  • STM32 HAL库
    2篇
  • QT
    1篇
  • LVGL
    1篇
  • 通讯协议
    2篇
  • 算法
    1篇
  • 开发工具
    1篇
  • STM32 uC/OS-III使用教程
    5篇
兴趣领域 设置
  • 编程语言
    c语言
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

STM32 HAL库 SPI主从双机通信

最近因为项目需求,需要在一块板子内实现一个主机和五个从机的通信;主机平台选用的是STM32F407VGT6,从机平台选用的是STM32F103C8T6;通信总线选用的是SPI总线。在构想是觉得采用SPI进行主从通信会很简单,但在实际开发的过程中,各种坑,通信时而正常时而混乱。不过在不断探究中,也逐渐发现了,各种问题所在,借此记录下来,希望能帮助一些兄弟在开发中避免一些坑。
原创
发布博客 2023.11.10 ·
2796 阅读 ·
3 点赞 ·
23 评论 ·
48 收藏

c语言位运算宏定义封装

【代码】c语言位运算宏定义封装。
原创
发布博客 2023.10.27 ·
240 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

QT 程序发布

在QT程序完成之后需要实现在其他没有部署QT环境的电脑上运行自己的QT软件。分享 Qt 程序(项目)的方式无非两种,要么直接分享程序的源代码,要么分享程序生成的可执行文件。和直接分享源码相比,大多数人会选择后者。但遗憾地是,Qt Creator 默认以动态链接的方式生成可执行文件,该文件无法独立运行,必须为其提供所需的动态链接库。也就是说,只分享 Qt Creator 生成的可执行文件是不行的,必须将运行所需的动态链接库一起分享,可执行文件才能在他人的电脑上正常运行。
原创
发布博客 2023.09.16 ·
287 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

二分查找(折半查找)

*** @brief 二分法查找(默认查找类型:查找第一个大于等于给定值的数据——可修改)* @note 函数使用前提是该集合已按照从小到大的顺序排序;* 在修改查找条件后建议进行以下条件的测试:给定值超过集合最大值、给定值小于集合最小值、给定值等于集合中某个值、给定值位于两个相邻值中间* @param *array:检索数据所在的集合的地址* @param data:待检索数据* @return*/int mid;char qw;int i = 0;i++;
原创
发布博客 2023.08.27 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

嵌入式各类输出设备的格式化printf()函数的实现

在嵌入式系统中可能会有多个输出设备,但标准库中的printf()函数只能重定向到一个设备上,那么其他设备就需要自己来实现新的printf()函数。添加以下头文件,但是在MDK平台好像没有 malloc.h 头文件,添加以后会报错,删掉该头文件即可。重定向printf()函数需要添加 stdio.h 头文件才能使用。调用时也需要在使用的.c文件中添加头文件 stdio.h 头文件。在.c文件中添加以下代码即可实现重定向printf()函数。这种利用C语言标准库函数的方式实现,代码简约,逻辑简单。
原创
发布博客 2023.07.13 ·
621 阅读 ·
0 点赞 ·
1 评论 ·
5 收藏

LVGL移植教程

目前是基于LVGL8.2版本和野火STM32mini开发板进行学习开发的,学习参考资料正点原子LVGL教程哔哩哔哩正点原子LVGL教学视频LVGL官网LVGL中文网(百问网)LVGL(Light and Versatile Graphics Library)是一个免费的轻量级开源图形库,其主要特征有:源码下载提供以下2种方式:LVGL 只需要一个简单的驱动程序函数即可将像素阵列复制到显示器的给定区域中,其对显示屏的兼容性很强,具体要求如下(满足其一即可):① 具有 8/16 /24/ 32 位色深
原创
发布博客 2023.07.06 ·
6144 阅读 ·
9 点赞 ·
11 评论 ·
43 收藏

I2C总线协议中文版PDF

发布资源 2023.05.03 ·
pdf

SPI通信协议详解

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据。SPI是一种事实标准,并没有一个官方标准,已知已有的器件SPI 速率可达到50Mbps,具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。此外, SPI没有相应的流控和应答机制,这样跟IC协议相比在数据可靠性上有一定的缺陷。
原创
发布博客 2023.04.11 ·
2253 阅读 ·
2 点赞 ·
2 评论 ·
26 收藏

CRC校验

CRC校验原理实现
原创
发布博客 2023.04.02 ·
369 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Git教程(简易)

git使用教程
原创
发布博客 2023.03.13 ·
113 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

I2C通讯协议详解

IIC也称I2C,是一个多主从的串行总线,由飞利浦公司发明的通讯总线,属于半双工同步传输类总线,仅由两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA,IIC总线要求每个设备SCL/SDA线都是漏极开路模式,因此必须带上拉电阻才能正常工作。I2C协议占用引脚少,硬件实现简单,可扩展性强,I2C数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。IIC总线的SDA和SCL两根总线需要上拉,使总线处于空闲状态。IIC总线一共有两种状态、四种信号。
原创
发布博客 2022.11.06 ·
16528 阅读 ·
29 点赞 ·
1 评论 ·
238 收藏

STM32G070RBT6 HAL库 RTC教程

基本的RTC HAL库配置
原创
发布博客 2022.10.24 ·
1716 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

UCOS-III 互斥量

互斥量本质是一种特殊的二值信号量,也不具备传递数据的功能。与二值信号量不同的是:它具有优先级继承机制、支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源的独占式处理。任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得互斥量的所有权。当该任务释放这个互斥量时,该互斥量处于开锁状态,任务失去该互斥量的所有权。
原创
发布博客 2022.10.16 ·
2333 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

UC/OS-III 信号量

此外,系统还有很多资源,我们也可以使用计数信号量进行资源管理,信号量的计数值表示系统中可用的资源数目,任务必须先获取到信号量才能获取资源访问权,当信号量的计数值为零时表示系统没有可用的资源,但是要注意,在使用完资源的时候必须归还信号量,否则当计数值为0的时候任务就无法访问该资源了。在多任务系统中,我们经常会使用这个二值信号量。注:cnt参数:表示初始化时候资源的个数或事件是否发生标志,二值信号量的时候,这个值一般为 0 或者为 1,而如果信号量作为计数信号量的时候,这个值一般定义为初始资源的个数。
原创
发布博客 2022.10.15 ·
1281 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

UC/OS-III 消息队列

在app.c中定义//声明消息队列。
原创
发布博客 2022.10.09 ·
2124 阅读 ·
3 点赞 ·
0 评论 ·
12 收藏

UC/OS-III 任务管理(包含任务函数)

任务的延时在实际中运用特别多,因为需要暂停一个任务,让任务放弃 CPU,延时结束后再继续运行该任务,如果任务中没有阻塞的话,比该任务优先级低的任务则无法得到CPU 的使用权,就无法运行。任务先等待一个事件或信号的发生(无限期等待),还没等待到就被其他任务挂起,挂起的效果叠加,当且仅当任务等待到事件或信号并且挂起被恢复了,该任务才能够再次运行。该状态表明任务正在执行,此时它占用处理器,UCOS 调度器选择运行的永远是处于最高优先级的就绪态任务,当任务被运行的一刻,它的任务状态就变成了运行态,
原创
发布博客 2022.10.04 ·
1151 阅读 ·
1 点赞 ·
0 评论 ·
7 收藏

任务创建 app.c代码讲解

第一步我们需要在app.c中为任务定义一个任务控制块,通常我们称这个任务控制块为任务的身份证。在 C 中上,任务控制块就是一个结构体,里面有非常多的成员,这些成员共同描述了任务的全部信息。/** TCB(任务控制块)//声明起始任务块 /*声明用户自定义任务块*/ static OS_TCB AppTaskLed1TCB;任务的栈占用的是MCU 内部的 RAM,当任务越多的时候,需要使用的栈空间就越大,即需要使用的 RAM空间就越多。一个 MCU 能够支持多少任务,就得看你的 RAM 空间有多少。
原创
发布博客 2022.09.29 ·
785 阅读 ·
2 点赞 ·
2 评论 ·
2 收藏

STM32HAL学习笔记

**STM32G431蓝桥杯HAL库学习笔记**LED灯互不干扰且不干扰LCD屏幕点亮前言由于led灯与lcd屏幕共用了PC8-PC15的引脚,所以如果直接进行相应的操作会对两者的显示造成影响。一、电路板原理图二、程序笔记1.编程原理利用锁存器SN74HC573进行LED 灯数据锁存,需要点亮led灯时,先读取GPIOC->ODR寄存器的值,在向ODR寄存器写入相应的16进制的数据,向锁存器的LE角写入高电平打开寄存器,在输入低电平关闭锁存器,复位ODR寄存器的值。2.程序
原创
发布博客 2022.03.21 ·
233 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

自建封装库.PcbLib

发布资源 2021.06.08 ·
PcbLib
加载更多