单片机
文章平均质量分 78
Ethan-Code
好记性不如烂笔头,加油!
展开
-
0.96OLED 4针IIC STM32-标准库版本(附源码)
main.c//需要在调用这个显示接口前声明txt这个变量 # define display(row , col , size , . . .) {//延时函数初始化 uart_init(9600);//串口初始化为9600 LED_Init();//初始化与LED连接的硬件接口 OLED_Init();for(i = 0;i <= 7;LED0;} }原创 2023-03-29 22:07:05 · 2834 阅读 · 2 评论 -
0.96OLED 4针IIC STM32-HAL库版本(附源码)
0.96OLED 4针IIC STM32HAL库版本OLED的显存,也就是坐标关系如下:size = 8 时存放格式如下(x, y)//[0]0 1 2 3 … 127 //[1]0 1 2 3 … 127 //[2]0 1 2 3 … 127 //[3]0 1 2 3 … 127 //[4]0 1 2 3 … 127 //[5]0 1 2 3 … 127 //[6]0 1 2 3 … 127 //[7]0 1 2 3 … 127size = 16 时存放格式如下//[0]0 1 2原创 2022-05-24 13:47:20 · 4462 阅读 · 33 评论 -
PID算法介绍
位式控制算法流程图特点:位式控制算法输出信号只有H/L两种状态算法输出信号out的依据:Pv < Sv ==> HPv >=Sv ==> L只考察控制对象当前的状态值PID控制算法流程图Sv: 用户设定值——目标值Pv: 控制对象的当前值PID算法分析从开机以来,传感器的所有采样数据序列X1, X2, … , Xk-1, Xk分析采样点的数据序列:可挖掘三方面信息P算法Ek = Sv - Xk>0原创 2022-03-16 13:37:26 · 2176 阅读 · 0 评论 -
PID控制器的介绍
PID 控制算法介绍在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称 PID 控制,又称 PID 调节。PID 控制器问世至今已有近 70 年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用 PID 控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适原创 2022-03-16 13:35:33 · 8175 阅读 · 1 评论 -
C语言#error的使用
#error的作用#error为预处理指令,用于指示错误。编译程序时,只要遇到#error 就会生成一个编译错误提示消息,并停止编译。其语法格式为:#error error-messageerror-message 不需要用双引号包围.案例在查看大工程中的宏的时候,发现其在多个头文件中均有定义。由于项目中会根据条件编译来选择对应的头文件,因此在所有的这些含有该宏定义的头文件中加上一句:#error debug如下所示然后全部保存save all代码编辑器是sublime,原创 2022-03-14 12:16:28 · 7022 阅读 · 0 评论 -
【问题】使用STM32CubeMX开发FreeRTOS只能添加3个任务——单片机操作系统的堆栈内存问题
2. 堆栈溢出导致程序崩溃2.1 遇见问题在进行消息队列的实验中,由于之前测试按键扫描任务和跑马灯任务没有删除,直接在之前的prj上添加了向队列发送消息任务和从队列接收消息任务,在程序写完后,编译链接下载没有报错,但是在我使用新创建的队列发送和接收消息任务的时候程序只执行一次就卡死,找了很久没找到原因。在进行将新添加的任务删除的尝试后,发现程序又可以正常进行多任务切换。只要加上新的任务就跑不通。为了避免程序崩溃是由于消息队列引起的嫌疑,我将消息队列任务移植到前面的3个任务中,并把多余的任务删除。实验现原创 2021-11-30 03:41:37 · 4131 阅读 · 0 评论 -
【问题】Clion开发STM32添加文件后报错“No such file or directory“
1. Clion添加文件后编译报错"No such file or directory"1.1 添加文件直接在工程目录下创建文件夹并创建源文件和头文件添加后,在编写.c文件包含.h文件时会出现错误,需要修改CmakeList.txt添加头文件include_directories(Path1/path1 Path2/path2)Path1/path1表示头文件路径,不同的路径用空格分开,如下图所示:添加源文件file(GLOB_RECURSE SOURCES "directory/*.原创 2021-11-30 03:39:08 · 3374 阅读 · 8 评论 -
在STM32中使用printf()的方法(可直接复制粘贴)
1. 使用printf的方法1.1 重定向在使用printf之前添加重定向代码:#ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker-Libraries-Small printf set to Yes) calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else #define PUTCHAR原创 2021-11-26 18:59:31 · 12328 阅读 · 6 评论 -
Clion开发STM32添加文件后编译报错“No such file or directory“
Clion添加文件后编译报错"No such file or directory"1.1 添加文件直接在工程目录下创建文件夹并创建源文件和头文件添加后,在编写.c文件包含.h文件时会出现错误,需要修改CmakeList.txt添加头文件include_directories(Path1/path1 Path2/path2)Path1/path1表示头文件路径,不同的路径用空格分开,如下图所示:添加源文件file(GLOB_RECURSE SOURCES "directory/*.*")原创 2021-11-26 18:50:01 · 4049 阅读 · 7 评论 -
IIC协议详解,附单片机软件模拟源码
I2C协议物理层原理总体特征协议层起始和停止条件数据有效性响应/应答寻址读数据写数据单片机通讯软件模拟硬件外设(一)物理层1. 原理I2C 总线,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来 产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。2. 总体特征 连接到总线的器件输出级必须是漏极开路或集电极开原创 2021-09-28 01:04:41 · 3798 阅读 · 5 评论 -
在STM32中使用printf()和scanf
在STM32中使用printf()和scanf本文出处: https://shawnhymel.com/1873/how-to-use-printf-on-stm32/作者:Shawn Hymel内容来源于网络,本文只做翻译和学习,侵删。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C0MS0xDg-1623856482643)(https://shawnhymel.com/wp-content/uploads/2019/08/stm32-retargeting.翻译 2021-10-29 19:47:21 · 5275 阅读 · 0 评论 -
单片机嵌入式中sprintf()函数常用使用方法
前言在嵌入式开发中经常需要将一个变量实时通过串口等协议传输并显示到LCD等显示屏上。但我们得到的大多数的底层库里面只留有显示字符串的接口。因此需要将变量转化为字符串。sprintf()函数的用法函数原型:int sprintf(char *buffer, const char *format, [argument]...)参数:(1)buffer:是char类型的指针,指向写入的字符串指针;(2)format:格式化字符串,即在程序中想要的格式;(3)argument:可选参数,可以为任意原创 2021-04-02 00:09:53 · 4404 阅读 · 0 评论