- 博客(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
原创 关于RGB888和RGB565互转代码实现方案推荐
RGB888和RGB565互转例如嵌入式中的LCD屏接口一般位IIC、SPI、8080等,如果传送RGB888每个像素点就要多送一个字节,320*240的LCD屏就要多送76800字节的数据。
2022-09-24 10:43:17
4756
原创 关于单片机串口重定向示例展示
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
原创 程序的可移植性-学习笔记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的代码
2023-06-07
ASCII字库5x8适用于嵌入式LCD屏 基于Visual Studio的代码
2023-06-07
ASCII字库12x24适用于嵌入式LCD屏 基于Visual Studio的代码
2023-06-07
ASCII字库8x16适用于嵌入式LCD屏 基于Visual Studio的代码
2023-06-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人