自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 英飞凌XMC系列单片机教程 第一章,开发环境的搭建

文章目录1.xmc4500单片机简介2.xmc4500开发环境2.2,硬件开发环境2.3 DAVE开发环境的使用1.xmc4500单片机简介XMC4500 系列属于工业微控制器 XMC4000 家族,该系列以 ARM Cortex-M4 核心处理器为基础。优化的 XMC4000 系列器件用于电机控制、功率变换、工业连接和检测及控制应用。总而言之,英飞凌xmc系列就是一款基于m4内核的高性能单片机。和stm32f4使用起来也是大同小异的。****注意:虽然这是xmc4500单片机的开发教程,但我使用的

2021-09-26 18:26:31 5890 4

原创 STM32F407VET6+ST7735TFT LCD彩屏驱动程序

硬件准备STM32F407VET6开发板一块编译器使用的是STM32cubeide。屏幕使用的是如图所示的屏幕,驱动芯片是st7735.驱动协议采用的是spi通讯协议。和stm32芯片的连接方式如下,使用的是spi2.CS片选脚 PA4A0脚(数据指令控制脚) PA5LED脚(背光脚) PA3reset(屏幕复位脚) PA2sck(spi时钟脚) PB10SDA(SPIs数据脚) PC3vcc和gnd连接到5V电源上就可以了。由于使用的是cubeide,代码都是直接生成的

2021-07-17 23:01:30 3935 2

原创 U8G2库移植到STM32平台上

U8G2库简介U8g2是嵌入式设备的单色图形库,一句话简单明了。主要应用于嵌入式设备,包括我们常见的单片机;建议先看这篇博客的介绍,写的比较好u8g2库的使用这篇博客介绍了对于u8g2的使用,但是是针对arduino平台的,但是使用方法在stm32平台上也是大同小异。U8G2库的下载及硬件平台U8G2库是一个开源的github项目,通过github可以直接下载 。下载地址此次使用的mcu是stm32f407vet6,屏幕是IIC接口的oled12864屏幕,屏幕驱动芯片是ssd1306.,使用的

2021-06-22 17:11:53 6962 11

原创 CUBEIDE使用attribute进行绝对定位

为什么使用__attribute__attribute__的作用就是将变量或者数组存在指定的地址。在实际应用中一般将程序的版本信息固定在特定的flash地址。比如在keil中使用const u16 gflashdata__attribute((at(0x0800F000))) = 0xAEAE;,就是将AEAE写入对应的地址,这样做的好处是,在程序烧录进flash的时候,对应的地址就会写入对应的数据。来举一个在工作中经常用到的使用场景,在工作中批量生产的产品一般都是一个bootloader文件,一个A

2021-06-09 11:06:09 1708

原创 1.3寸 SH1106 OLED 屏幕驱动 基于stm32

1.前言最近公司使用了一块用SH1106驱动的OLED 屏幕,但是发现网上的OLED大部分都是基于ssd1306驱动芯片的,关于SH1106的资料比较少,因此将自己使用过程中遇到的问题写下来。2.电路及连接屏幕使用的是IIC接口,按照正常的iiC连接即可3.驱动屏幕到这一步,就开始点亮屏幕吧。SH1106在使用中基本和ssd1306是一样的,只是在初始化的地方存在不一样。 Write_Command(0xAE);//set display display ON/OFF,AFH/AEH Writ

2021-06-03 10:23:39 9343 5

原创 STM32的hal库CAN开发指南2,CAN数据接收

1.介绍前一篇博客介绍了使用hal库进行CAN的发送数据,接下来介绍使用CAN进行数据接收。建议先看前一篇文章,再看这一篇文章。CAN数据发送,文章地址。硬件配置,以及stm32的配置,和前一篇文章相同。2.发送数据使用CAN进行接收数据,需要先进行过滤器的配置才能接收到数据。参考stm32的数据手册。2.1,接收过滤器配置void CAN_Filter_Config(){ CAN_FilterTypeDef sFilterConfig; //声明 CAN过滤器结构体 //列表模式的

2021-05-06 14:29:38 4237 3

原创 STM32的hal库CAN开发指南

1.介绍最近在学习CAN通讯协议的时候,发现许多文章在介绍协议时介绍的非常详细,可是在具体的MCU上进行应用时,就变得马马虎虎了。因此将自己的所学所想记录分享出来,抛砖引玉。本文着重讲解CAN协议在stm32上面的应用,对于理论知识不做过多的讲解,在这里推荐一篇博客,写的非常棒,将CAN讲解的深入浅出,强烈推荐,附上链接博客1:https://blog.csdn.net/weixin_40528417/article/details/79476186博客网址博客2:https://wlink.bl

2021-04-30 16:47:39 4126

原创 stm32使用sd卡进行程序升级1

这是一篇stm32使用sd卡进行bootkoader升级的文章,前言在进行sd卡的升级之前,需要用到几个方面的知识,1。fatfs文件系统,详情参考这篇博客fatfs2,bootloader相关知识bootloader3 使用软件软件使用的是keil5,芯片是stm32f407vet6,基于hal库。...

2020-12-28 14:42:02 1180

原创 基于hal库实现stm32内部flash的读取

stm32的内部flash在我们实际运行的时候。很多时候并没有用完,还有许许多多的空闲内存,因此可以利用内部flash存储一些数据。我使用的是stm32f407vet6 ,所以就用这个芯片来进行演示。认识内部的存储划分。这是芯片内部的存储划分,需要注意的是,我们自己的程序也是存储在这些位置,所以需要存储在应用程序没有使用的内存区域,关于如何查看内存的划分,可以去查看map文件,在此不展开叙述。由于读写内部flash不需要特别的外设,只需要开启一个串口就好了。使用的是cube生成的。开始读写读写

2020-09-20 10:55:29 4939 3

原创 SHT20读取温湿度,基于cubemx

基于cubemx生成的hal库读取sht20传感器的值。主控使用的是f407vet6,使用keil5.**一,生成iic底层驱动代码。**打开cubemx,选择对应的主控,同时打开串口1,和iic1.打开串口是为了将温度的值,输出到串口助手上。这一步,网上有许多教程,在此就不做赘述了。将生成好的工程,使用keil打开。**二 ,配置串口函数**在生成的 usart,c底部加上#ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_pu

2020-09-11 23:01:10 2427 5

原创 stm32cube生成rtc时钟

cube生成rtc时钟的工程这一步在网上可以找到许多资料,在此就不做过多的赘述了。记住在生成工程的时候,也把串口打开,这样方便直接把时间信息输出到串口。输出时间信息在工程完成以后,只需要简单的加几句就可以输出时间。这几句加在主循环里面, /* USER CODE END WHILE */ HAL_RTC_GetTime(&hrtc, &GetTime, RTC_FORMAT_BIN); HAL_RTC_GetDate(&hrtc, &GetData, RTC

2020-08-29 20:54:19 457 1

原创 2020-08-16

at24c02 页写入过程页写入的过程,首先发送开始信号,等待从机应答,然后发送从机地址,等待应答,。在发送需要写入的数据地址(at24c02页写入 一次可写入八个字节,所以字节的地址设置为八的倍数),等待应答信号以后,连续发送八个字节。。重点来了。 单片机连续发送的字节,eeprom不是立即写入芯片内部的,而是把字节全部接受到以后,写入存储器,同时,地址也会自➕。所以 在数据写入完成以后,要过一会才能读取到数据。...

2020-08-16 23:17:12 74

原创 C语言指针

指针的本质C语言指针的本质就是地址,就是计算机中存储的各个变量的内存空间的地址。我们可以通俗的理解指针就是地址,地址就是指针。看以下代码。int a=10//在内存中开辟了一块空间,里面存的是整形变量10这个数字int *p=&a;定义了一个指针变量,将a的地址存在指针变量里面。使用图片的方式来帮助各位读者进行理解定义了一个变量a。里面存储了一个数字10,下面的0x1999就是这一块内存的地址。然后定义了一个指针变量,里面存储的数字就是变量a的地址。这里需要非常注意的一个地方是,指

2020-06-21 20:40:14 119

原创 iic使用总结

iic写数据iic写数据的操作步骤1 iic开始信号2,发送从设备的地址3,等待应答4,发送从设备寄存器地址5,等待应答6,发送数据7,等待应答8,结束信号iic读数据iic读数据的操作步骤1 iic开始信号2,发送从设备的地址3,等待应答4,发送从设备寄存器地址5,等待应答在发送完成地址以后,需要重新开始6,iic开始信号8,发送从设备的地址 最后一位置1 表明读取数据8,读取数据9 ,读取完成一个字节的数据,主机发送ask信号,表明还要继续读取10 读

2020-06-21 17:13:55 515

原创 全网最简单实现stm32基本定时器实现毫秒级精确延时

在stm32中,系统滴答定时器可以实现精确的延时,但有时需要使用基本定时器实现精确延时,保证接下来采取的方法是全网最简单的方法。使用的平台是野火mini开发板第一步 配置tim6#define BASIC_TIM6 TIM6#define BASIC_TIM6_CLOCK_CMD RCC_APB1PeriphClockCmd#define BASIC_TIM6_CLK RCC_APB1Periph

2020-06-13 21:02:37 6544 4

原创 keil修改编译栏也为护眼绿

经常看到别人的keil配色四周都是护眼绿,摸索了很久,终于找到了适合w10的修改方法。第一步 调出运行菜单。右击开始键选择运行,或者同时按下键盘上的WIN+R打开运行框。输入 regedit 回车转到注册表编辑器。第二步选择第二项 HKEY_CURRENT_USER 点击进入。进入后点击 Control Panel 进入。第三步在 Control Panel 文件夹中找到 Colors 文件夹后点击。在 Colors 中找到 window,点击。第四步将你准备设置的护眼绿参数填

2020-06-07 21:53:15 633 2

原创 SIM800L模块发送短信

因为项目需求需要使用到SIM短信模块,记录下SIM模块的使用记录。1,准备工作需要一块SIM模块,我使用的是SIM800L模块,淘宝可以购买到,如图所示,推荐购买这一款,板上集成了电压模块,不需要单独使用3.7v供电,比较方便。一张电话卡,自己手机的电话卡即可,同时还需要一个卡套,不然卡放不进去。2,调试工作插上卡,上电以后,模块会自动寻找信号,串口助手发送AT,模块返回ok,表示...

2020-04-11 13:13:41 10882 1

原创 altium design 常用规则设置

在ad绘制完电路图,需要对常用的pcb规则进行设置。规则一 设置走线宽度设计——类 里面设置一个电源类,将电源走线都放进去。设计——规则 设置走线宽度 ,电源线设置为15mil信号线设置为 6mil 或者8mil规则二 设置过孔的大小一般将过孔设置为 12mil,24mil规则三 设置铺铜将铜皮与过孔设置为全连接和gnd设置为十字连接规则——plane——polgen...

2020-03-30 14:00:36 903

原创 esp8266在局域网模式下的透传

esp8266使用透传模式,在局域网的范围内,将数据传至上位机。at指令的发送顺序为AT+CWMODE=1AT+RSTAT+CWJAP=”public”,”123456789” //连入局域网public 局域网的名字AT+CIPMUX=0AT+CIPMODE=1AT+CIPSTART=”TCP”,”192.168.43.136”,8080 //连接上服务器(此处使用的IP服...

2020-03-19 19:37:03 2358 2

原创 freertos学习之路 ,第一章,写一个简单的任务切换。

在freertos中创建静态任务的一般步骤第一步 任务栈第二步 写一个任务函数第三步 任务控制块 tcb(控制块的英文名字)动态创建任务的步骤,任务句柄static TaskHandle_t Task_Handle = NULL; 创建一个任务的任务句柄接下来在主函数里面开启 BaseType_t xReturn = pdPASS; //d定义创建信息的返回值 ...

2019-07-23 22:40:53 246

原创 C语言之常用结构图

结构体时一种数据类型可以简单理解为int只是需要自己定义struct person { int age; int high; char name[20]; };简单的结构体定义如上所示在使用结构体之前 需声明 struct person person1,*p,*p1=(struct person *)malloc(sizeof(struct person));这是...

2019-07-08 10:14:07 1344

转载 我的C语言

我的C语言学习记录我的C语言## 我的学习之路这是一篇写给我自己看的博客。字符串,数组与函数。字符串有两种常用的定义方法, char *s="hello everyone",s1[]="lllllllllll",s2[]="gg gg ggg gggg gggg";第一种方法是使用指针定义,第二种是常规定义#include <stdio.h>#include &...

2019-07-06 16:24:10 273

空空如也

空空如也

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

TA关注的人

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