自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_44829055(金丝草)的博客

工作总结与经验积累,学习进步......

  • 博客(91)
  • 资源 (2)
  • 收藏
  • 关注

原创 基于STM32F10x的驱动库

目前完成了硬件IIC、软件模拟IIC、硬件SPI、UART、MDA、FSMC驱动LCD屏、RTC、IWDG、WWDG、EXIT等驱动,及W25Q128的Flash、AT24C02、Memcpy_DMA拷贝等外设驱动。此项目基于STM32F10x标准库基础上完成各外设BSP驱动,使其用户开发软件更快,更能开发复杂系统。如果大家发现有什么地方有BUG,可留言即可。其它未完成的驱动,后面有空在搞。今天将公开gitcode项目,基于STM32F10x的驱动库。我的工程项目包含了FreeRTOS9.0版本。

2023-06-13 00:26:17 584 5

原创 ESP32C3工程找不到蓝牙头文件解决方法

我复制到如下图所示,并增添app_blufi.h以供其它文件操作。并增添make文件。其中CMakeLists.txt和component.mk如下。2、使能menuconfig里的蓝牙并使能相关头文件并开启蓝牙4.2。1、在官方SDK里找到例程并复制头文件和源文件到自己的工程中。包含必要的蓝牙头文件。不使能工程编译报错!本次在我的工程里要加上蓝牙辅助配网功能的方法。不使能工程编译报错!3、至此工程已经配置好了,可以正常编译了。

2023-11-14 13:13:25 565

原创 ESP32 C3 smartconfig一键配网报错

此时可以断定配网的秘钥与PS值有关联,这个时候我使用云智能app对别家的产品进行配网,发现还是报passwd err这个气候就能发现,这个配网的PS值和和esp32里面的PS值必须统一,可以推断,SSID应该是明码发过来的,那个passwd大多数使用AES128加密而这个PS就是对passwd解密的秘钥,其它产品是解析不出来的,只有我的esp32里面有对应的PS值可以。这个时候我的产品无法连接到阿里云,因为它的PS值是错的,这个地方我在代码里获取到IP后重新将我的PS值设置进入。至此这个一键配网就OK了。

2023-11-09 09:08:43 910

原创 关于esp-aliyun的SDK编译常出错的问题1

阿里云SDK里面的CMakeLists.txt里多处均调用了esp-aliyun这个文件夹。下载完SDK后一般会将工程文件夹进行修改已适配自己的项目。这时问题就已经存在了。还是老老实实的别修改esp-aliyun文件名了哈。

2023-08-22 11:04:52 275

原创 基于STM32F10x的独立按键测试

按键40毫秒以上为短按、1秒以上则为长按、3秒以上则为一直按。且长按10秒以上则报错(这里可以报警,需要故障维护之类的)。在按键任务里面每隔20毫秒扫描一下按键。包括独立按键,矩阵按键(由于本人没有矩阵按键,故没有测试)。矩阵按键配合外部中断,我认为很少见,如大家有参考的例子,可以留言交流下。按键任务代码如下,此处截图,如看源码请到我的GitCODE里查看。本人基于野火指南者开发板,使用FreeRTOS,创建按键任务。另外独立按键是可以加入外部中断进行处理的,这里先用笨方法”

2023-07-24 23:43:09 455 1

原创 单片机尽力少用位域操作

2、在32位单片机中,u8、u16、u32类型操作起来基本没有什么影响,下图是我做的测试,可能测试不全面,按照当前测试,在32位单片机中这几个类型操作速度也不用考虑。3、无论在51还是在32中,哪个位域操作使用确实很爽,但是速度真的很慢。除非对速度要求很低的情况下,为了代码结构看起来顺,可以使用位域操作。1、在51单片机中少用uint32_t类型,查看汇编真的好多条指令,尽力避免少用。4、如果大家有其它测试能证明u8比u32慢很多的话,告知下,我也参考一下。

2023-07-11 23:16:46 3704 1

原创 物联网芯片

3、当前完成的有BKP_BSP、DMA_BSP、EXTI_BSP、FSMC_BSP、GPIO_BSP、IWDG_BSP、I2C_BSP、RTC_BSP、SPI_BSP、UART_BSP、WWDG_BSP。5、基于以上BSP驱动,完成的有AT24C02、W25Q128、DMA拷贝、UART串口调试、LCD ILI9340、HC05、ESP8266、DS18B20。7、这个开源库,当前未完成的有CAN口、ADC、DAC、TIMER、PWM、UBOOT这几个是同样重要的。1、个人当前暂停这个驱动库的开发。

2023-07-01 21:10:25 945

原创 对ASCII 8x16字模加工处理,使其字模能明显查看

本人使用字模软件生成ASCII8x16的字库。发现对每个字符没有显示直观体现出来,于是使用Visual Studio 2022对原本字库进行加工,通过终端打印出来的数据,替换到我嵌入式工程中原始字库。源码就不贴了,源码我已经上传资源了,可下载。

2023-06-07 14:05:59 347

原创 基于STM32F10X的GPIO驱动V0.1

基于STM32F103做的GPIO驱动库,另外包含LED灯操作使用情况

2023-03-07 22:36:51 203

原创 基于STM32F10X的GPIO驱动

基于STM32官方库封装的GPIO库,完成了MCU BSP Driver分层设计中的第一步。

2023-02-27 22:32:55 431

原创 MCU BSP Driver分层设计

如果你关注类似于此设计,你的代码编辑水平已经可以了。

2023-01-19 14:37:13 886 3

原创 关于RGB888小端和RGB565大端互转代码实现方案

结构体位域和共用体在LCD屏上的RGB转换的重要性

2023-01-17 09:48:37 869

原创 关于RGB888和RGB565互转代码实现方案推荐

RGB888和RGB565互转例如嵌入式中的LCD屏接口一般位IIC、SPI、8080等,如果传送RGB888每个像素点就要多送一个字节,320*240的LCD屏就要多送76800字节的数据。

2022-09-24 10:43:17 4756

原创 如何修改const修饰的变量

const常量值的修改

2022-05-26 16:37:23 930

原创 关于二维数组4种模式旋转打印出来

数组旋转

2022-05-17 21:56:46 518

原创 关于单片机串口单步调试运行正常,全速异常

51单片机串口单步运行正常,全速运行异常,解决方案

2021-11-27 14:19:31 5948

原创 关于单片机串口重定向示例展示

1、这个是我在STM32里的串口重定向函数。2、目前在STM32里可以使用,不知道在51单片机里可不可以用。3、展示给有需要的人。///重定向c库函数printf到串口,重定向后可使用printf函数int fputc(int ch, FILE *f){ /* 发送一个字节数据到串口 */ USART_SendData(USARTx, (uint8_t) ch); /* 等待发送完毕 */ while (!USART_GetFlagStatus(USARTx, USART_

2021-11-26 17:59:57 1033

原创 基于STM32 GPIO模拟之ILI9341字符串的显示-学习笔记13

1、基于上一篇《基于STM32 GPIO模拟8080时序操作ILI9341》的基础上进行ascii字符串的显示。2、本人使用的ASCII字库为12*22大小。3、本代码罗列了很多常用的RGB565色彩。4、本代码封装了设置光标位置、字符显示在哪一行,字符的前景色和背景色等。功能函数满足大部分实际需求,可移植自己的项目中。5、本代码没有加入LOGO的显示,logo图片较大,需要用到flash,下一篇在加入logo图片的显示,欢迎关注支持哈。...

2021-11-06 14:20:20 783

原创 对LCD屏一次性刷新整个屏幕的RGB数据

1、前段时间调试LCD屏的时候使用国产的LCD控制器NV3030A2,此芯片有BUG,故每次要刷新数据的话就需要一次性的发送整个屏幕的RGB数据。2、具体原因为:第一次开窗假如开窗100*200,下次开窗假如开窗12*22,那么观察屏幕,开窗内的数据会丢失异常的。3、我的LCD屏为320*240分辨率。4、解决方案,每次向屏幕发送数据的时候要发送整个屏幕的数据,并且,发送数据前的开窗必须为320*240,发送数据过程中不能再次开窗,要是再次开窗也必须是320*240,且数据还要从头发送。5、

2021-11-06 13:51:33 1962

原创 测试MCU是大端模式还是小端模式

1、在编程开发过程中必须要知道你的MCU是大端模式还是小端模式。2、通过以下代码就能轻松知道是大端模式还是小端模式。3、废话不多说,直接上代码。#include "stdio.h"#include "./usart/usart.h"#define uint8_t unsigned charuint8_t mcu_Small_end_test(uint8_t *intput_data);//返回0表示小端模式否则大端模式int main(void){uint8_t in...

2021-11-06 10:21:53 744

原创 基于STM32 GPIO模拟8080时序操作ILI9341-学习笔记12

1、我本人使用是野火STM32指南者开发板。2、LCD为ILI9341,3.2英寸屏幕,分辨率320*240.3、了解8080时序通信原理,及学会使用LCD液晶屏。4、本次实验可能是由于硬件原因设计原因吧,数据线上没有上拉电阻,当读取LCD屏发来的数据时,数据端口配置上拉输入或下拉输入均读取数据异常,本次我配置为浮空输入就没有问题,另外数据端口配置为开漏模式也是可以的。5、本次用到的数据线为16条,对应的端口为Proc_D、Proc_E6、本次用到的纳秒延迟是不精确的大概125纳秒吧,也

2021-10-28 22:17:47 2193 9

原创 Lcd ST7789S寄存器初始化配置

1、代码很简单就是对LCD内部寄存器的一些初始化配置。2、lcd_st7789s.h//作者:金丝草extern Lcd_Write_Cmd(u8*,u32);extern Lcd_Write_Data(u8*,u32);void LCD_ST7789S_REG_Init(void)//lcd屏内部寄存器配置,不能修改{ u8 lcd_buf[32]; //以下代码最大使用缓存31字节 //--------------------------------ST7789S Slee

2021-10-11 17:37:24 2685

原创 Lcd ILI9340寄存器初始化配置

1、源码如下,初始化ILI93402、LCD_ILI9340.h//作者:金丝草extern Lcd_Write_Cmd(u8*,u32);extern Lcd_Write_Data(u8*,u32);////////////LCD液晶屏内部寄存器的初始化配置///////////////////void LCD_ILI9340_REG_Init(void)//lcd屏内部寄存器配置{ u8 lcd_buff[20]; //以下代码最大使用缓存15字节 lcd_buff[

2021-10-11 17:12:31 963

原创 STM32_配置串口通信-学习笔记11

1、串口的初始化配置。2、printf()函数的重定向。3、串口控制LED灯。usart.h#ifndef __USART_H__#define __USART_H__#include "stm32f10x.h"#include "stm32f10x_usart.h"#include "stm32f10x_rcc.h"#include "misc.h"#include <stdio.h>// 串口 1-USART1#define USARTx USART1/

2021-05-26 17:26:36 259

原创 单片机IO位域定义及操作

1、位域操作单片机IO口,结构清晰,且减少代码运算量(虽然不多哈)。2、如果8个IO口不是P0/P1/P2/P3等,而是不同的GPIO口组合的8个,那建议使用位域操作。范例:优先考虑,赋值一次后分别对8个IO单独赋值。#define LED_ROW1 P2_1#define LED_ROW1 P2_0#define LED_ROW3 P0_1#define LED_ROW4 P0_5#define LED_ROW5 P2_5#define LED_ROW

2021-05-26 17:11:06 1661

原创 51单片机——USART全双工模式通讯-波特率可选1.3版本

1、优化《51单片机——USART半双工模式通讯-波特率可选1.2版本》里的代码。2、主要修改了串口中断里的代码和主函数里的发送代码,接收缓存50字节(这个可自行调整串口缓存大小)。3、此代码工作在半双工模式。4、使用系统输出函数之后要使用自定义函数发送则需要延迟2毫秒,要不然会出错。切记。测试结果:定时器1、定时器2波特率均已验证OK。4800bps~115200bps均OK。main.c#include "uart.h"#include <stdio.h>#

2021-03-29 10:45:11 1213 1

原创 51单片机——USART半双工模式通讯-波特率可选1.2版本

1、优化《51单片机——UART串口通讯-波特率可选,增添定时器2产生波特率1.1版本》里的代码。2、主要修改了串口发送和串口中断里的代码,且增加了串口发送标识位。

2021-03-27 13:19:20 1529 2

原创 51单片机——AT24C02_EEPROM驱动-模拟IIC通讯32页8字节缓存1.2版本

1、优化上节《51单片机——AT24C02_EEPROM驱动-模拟IIC通讯32页8字节缓存1.1版本》里的代码。2、加入算法,这个很重要,可以指定位置开始写入数据,指定写入多少个数据(注意写入的位置+写入的数据个数别大于255了),而不用担心。3、我已调试OK,在我的51单片机上。希望大家可以点赞,收藏,谢谢!4、用到的代码有delay.c / usart.c / iic.c / at24c02.c / main.ciic.c iic.h 请拷贝《51单片机——STC89C52_模拟...

2021-03-24 18:14:05 320

原创 51单片机——STC89C52_模拟IIC驱动代码1.1版本

1、优化《51单片机——STC89C52_模拟IIC通讯驱动1.0》里的代码,本模拟IIC代码适用于AT24C02,其他器件可能需要在代码里加入延迟。建议用本版本或后续版本,别用1.0及之前的版本。2、对于IIC通讯,我觉的有2种通讯方案。 方案1:每次函数结束后未释放SDA线,且SCL=1; 方案2:每个函数结束后释放SDA线,且SCL=0; 本次采用方案1,方案2有时间在调试。3、对于IIC时序,也就6种:开始信号、结束信号、写1字节、读1字节、接收ACK、发送AC...

2021-03-24 17:57:02 1236

原创 51单片机——8位数码管显示正整数和小数及解决鬼影问题1.2

1、优化上节《51单片机——8位数码管显示正整数和小数及解决鬼影问题1.1》里的代码。2、原来的小数对于DS18B20温度转换有问题,本次直接解决了,对DS18B20温度转换想了解的请看本人的《51单片机——DS18B20温度传感器-1总线通讯1.2》3、对DS18B20转换问题(小数、正负号小数、正整数)修改了原来的convert_long_int()这个函数。本次主要看void convert_long_int(unsigned long int DATA,bit flag_bit,unsig.

2021-01-30 16:56:58 1353

原创 51单片机——DS18B20温度传感器-1总线通讯1.2

写的不知道好不好,有什么不对的地方还请指出,谢了。1、本节基于DS18B20 1总线通讯。DS18B20温度转换很慢,初始化复位也慢,读取它的温度不需要那么频繁,可按照需要修改。2、在《51单片机——DS18B20温度传感器-1总线通讯1.1》章节上做代码优化了,主要对小数转换及显示问题算法优化了。3、12位精度显示的时候最后面那位老是0应该为0或者5的,不知道是不是精度太高芯片转换不到了,温度最大精确到百位已经可以了.4、在调试的时候发现有时候会出现-0.0000,在访问DS18B20的时

2021-01-30 16:16:27 1083

原创 51单片机——DS18B20温度传感器-1总线通讯1.1

写的不知道好不好,有什么不对的地方还请指出,谢了。1、本节基于DS18B20 1总线通讯。DS18B20温度转换很慢,初始化复位也慢,读取它的温度不需要那么频繁,可按照需要修改。2、驱动DS18B20,代码3个:初始化DS18B20、写1字节、读1字节。3、在《51单片机——DS18B20温度传感器-1总线通讯1.0》章节上做代码优化了,主要解决了小数转换及显示问题。4、温度读取出来后用数码管来显示小数,上章节数码管显示小数有精度问题,本次直接优化OK,只是12位精度显示的时候最后面那位老是

2021-01-30 12:11:14 771

原创 基于AT89C52做秒表0~99秒

1、应网友要求做了个秒表。2、定期器采用10毫秒,数码管后2位显示的是毫秒,故100毫秒进1秒,100毫秒*定时器10毫秒故就是1秒。3、使用3个独立按键,按键2表示启动秒表,按键3表示暂停秒表,按键4表示清除秒表且暂停秒表。4、已在我的清翔51开发板上实现,表现良好(只是按键的时候数码管会灭),这个我就不解了,需要用定时器做按键判断。main.c#include "Time.h"#include "key.h"#include <reg52.h>#include "

2021-01-05 13:10:01 3854 1

原创 使用位带别名区点亮led灯-学习笔记10

1、位带别名区计算公式为:(GPIOA_IDR_ADDR&0xf0000000)+0x02000000+((GPIOA_IDR_ADDR&0x00ffffff)<<5)+(n<<2)2、位带别名区参考《CM3权威指南CnR2》3、灯led、按键key与上节学习笔记9类似,就不贴出了。#include "stm32f10x.h"#include "led.h"#include "key.h"void delay(uint32_t x);#defin

2021-01-03 13:11:46 479

原创 独立按键控制led灯-学习笔记9

1、本例程中独立按键硬件采用消抖功能,具体按键并联电容,电容充放电的时候会滤波。2、灯的代码和上节学习笔记8类似,故本次只贴key按键的代码。#ifndef __KEY_H__#define __KEY_H__#include "stm32f10x.h"#define KEY_1 GPIO_Pin_0#define KEY_2 GPIO_Pin_13#define KEY1_GPIO_PORT GPIOA//端口A#define KEY2_GPIO_PORT GPIOC//端口C

2021-01-03 13:04:42 411

原创 使用固件库流水灯效果(RGB灯)-学习笔记8

1、使用固件库进行编程,点亮led灯。2、使用带宏参数定义,简化主程序。#ifndef __LED_H__#define __LED_H__#include "stm32f10x.h"#define LED_R_GPIO_PIN GPIO_Pin_5//红灯#define LED_G_GPIO_PIN GPIO_Pin_0//绿灯#define LED_B_GPIO_PIN GPIO_Pin_1//蓝灯#define LED_RGB_GPIO_PORT GPIOB#de

2021-01-03 12:57:59 706 3

原创 使用固件库点亮led灯(RGB灯)-学习笔记7

1、本次开始就要使用固件库编程了。2、官方固件库学会如何使用即可。#ifndef __LED_H__#define __LED_H__#include "stm32f10x.h"#define LED_G_GPIO_PIN GPIO_Pin_0#define LED_G_GPIO_PORT GPIOB#define LED_G_GPIO_CLK RCC_APB2Periph_GPIOBvoid led_config(void);#endif /*__LED_H__*/

2021-01-03 12:25:34 692

原创 工程模板创建-学习笔记6

1、工程模板请查看本人资源处下载。

2021-01-03 12:11:48 146

原创 程序的可移植性-学习笔记5

1、上节的代码进行优化增加程序的可移植性。2、本次调试发现使用宏定义#define 可以定义中文,虽说不太好,但是一看就懂。3、与上节学习笔记4未有多大变化。#ifndef __STM32F10X_GPIO_H__#define __STM32F10X_GPIO_H__#include "stm32f10x.h"/*GPIO 引脚号定义*/#define GPIO_Pin_0 ((uint16)0x0001) /*!< 选择 Pin0 (1<<0) */#de

2021-01-03 11:56:19 290

原创 初始化结构体及函数点亮led(RGB灯)-学习笔记4

1、本例程加入了枚举enum2、使用结构体及枚举来配置初始化GPIO从而点亮led灯。3、stm32f10x.h参照学习笔记2即可。4、代码虽然啰嗦,但是阅读方便很多。#ifndef __STM32F10X_GPIO_H__#define __STM32F10X_GPIO_H__#include "stm32f10x.h"/*GPIO 引脚号定义*/#define GPIO_Pin_0 ((uint16)0x0001) /*!< 选择 Pin0 (1<<0)

2021-01-03 11:46:36 634 1

ASCII字库6x12适用于嵌入式LCD屏 基于Visual Studio的代码

ASCII字库6x12适用于嵌入式LCD屏。基于Visual Studio的代码。运行后会在终端打印自摸数据及注释。拷贝终端到你的工程C代码文件里即可。高6bit位有效。

2023-06-07

ASCII字库5x8适用于嵌入式LCD屏 基于Visual Studio的代码

ASCII字库5x8适用于嵌入式LCD屏。基于Visual Studio的代码。运行后会在终端打印自摸数据及注释。拷贝终端到你的工程C代码文件里即可。高5bit位有效。

2023-06-07

ASCII字库12x24适用于嵌入式LCD屏 基于Visual Studio的代码

ASCII字库12x24适用于嵌入式LCD屏。基于Visual Studio的代码。运行后会在终端打印自摸数据及注释。拷贝终端到你的工程C代码文件里即可。注意解析的时候由于每行有2个字节16bit位,由于字库是12bit宽度,故第2个字节的后4bit舍去即可。高12bit位有效。

2023-06-07

ASCII字库8x16适用于嵌入式LCD屏 基于Visual Studio的代码

ASCII字库8x16适用于嵌入式LCD屏。基于Visual Studio的代码。运行后会在终端打印自摸数据及注释。拷贝终端到你的工程C代码文件里即可。

2023-06-07

工程模板创建.zip

对于初学者开发stm32f10x可以使用本模板,里面有大量头库文件。

2021-01-03

51单片机开发板原理图

免费下载查看,共同学习,只限学习使用,如用于商业开发,请及时删除,谢谢。原理图版权为清翔51单片机所有,建议大家学习使用。

2020-12-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除