自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 keil编译警告

在声明结构体函数时有返回类型,实际使用的是void。

2023-08-10 20:24:52 1582 1

原创 嵌入式c语言提高巩固(个人笔记)

补充学习c遇到的疑惑与问题,部分代码取自网上的c语言讲解视频

2022-07-14 22:16:09 439 1

原创 I2C通信

I2C总线有一条SDA线和SCL线,前者数据线,后者时钟线,内部使用开漏驱动,只能拉低不能拉高,但可以给SDA和SCL加上拉电阻将其拉高,两者初始电平都是高电平具体流程如图1.起始信号:将SDA和SCL拉低,表示准备开始接受信号2.地址位与读写位:主机发送从机的地址进行匹配,当确认是从主机发往从机时将读写位置0;反之置1;3.ACK/NACK:当主机发送数据完成会等待从机发送ACK信号,即将SDA位拉低,反之则发送NACK将SDA位拉高,并让主机重启或停止。4.数据位:发送或接收的数据,在其

2022-04-15 16:08:16 925

原创 keil使用arm_math文件报错

引入该文件后编译报错..\application\arm_math.h(306): error: #35: #error directive: "Define according the used Cortex cor添加如下全局宏定义USE_HAL_DRIVER,STM32F407xx,ARM_MATH_CM4,__FPU_USED=1U,__FPU_PRESENT=1U,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING...

2022-03-24 21:30:01 2066 1

原创 学习笔记(二)——裸机开发程序框架

以读取一个按键状态为例1.宏开关:只能支持一个版本按键#define HARDWARE_VER 1// key.c// 返回值: 0表示被按下, 1表示被松开int read_key(void){ GPIO_PinState key;#if (HARDWARE_VER == 1) key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_6);#else key = HAL_GPIO_ReadPin(GPIOF, GPIO_PIN_7);

2022-03-09 17:01:04 823

原创 esp8266用UDP和TCP连接

用esp8266的TCP和UDP连接TCP流程1.配置wifi模式 AT+CWMODE = 32.连接路由器 AT+CWJAP="SSID","PASSWORD"3. 查询 ESP8266 设备的 IP 地址 AT+CIFSR4. PC 与 ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 TCP 服 务器。 - 假设,PC 创建的服务器 IP 地址为 192.168.3.116,端⼝为 8080。5. ESP8266 设备作为 TCP client 连接到

2022-03-01 21:00:12 6537

原创 使用esp8266前的网络基础

1.IP每一位主机都有唯一的IP,且分为公有地址(路由器)和私有地址(局域网,ABC类)2.端口一个网络设备可以通过ip地址寻找另一个设备,通过对端口的设置可以准确的访问不同的设备(0到65535,其中0到1023为系统保留,不可取)网络通信基础就是一个ip加端口号3.TCP/UDPTCP:有连接(电话),会确保数据完整才接受,并且是一对一的,可靠性优先。UDP:无连接(寄信),不管数据是否完全,直接发送,属于多对多,速度优先,要求实时性的情况、4.常用的ESP8266指令

2022-03-01 20:46:18 7145

原创 时钟与GPIO口模式回顾

1.四个时钟HSI:内部高速时钟HSE:外部高速时钟LSI:内部低速时钟LSE:内部低速时钟HSE LSE要外接晶振或者外部电路,可在原理图看外接晶振角在cubemx中也可以看到,通过分频器,选择器和倍频器可得到想要的频率。进而控制各个外设总线频率。1MHZ = 0.000001s = 1us2.题外话:PWM在之前设置舵机定时器的时候,其中设置arr为19999,设置pulse为2000,设置向上计数此时的pwm占空比为百分10.其中涉及两个寄存器TIMx_CC

2022-02-27 16:24:32 4373

原创 中断的回顾

当满足中断触发条件时,程序会跳到对应的中断程序里执行,完成中断后再跳回main里。1.优先级中断的优先级分抢占优先级和子优先级两种,优先级高的中断先执行且前者先于后者判断。当两者相同时则去查询中断向量表中的位置。按先后执行。2.中断流程中断又分内部中断(sys,spi,adc等)和外部中断(GPIO),前者直接通过NVIC控制。后者则先通过EXTI控制再通过NVIC。如图同时因为GPIO有很多,不可能每个io口都有中断,因此设置中断线。即将每个端口号相同的io口设为一组中断线,产

2022-02-22 15:09:55 99

原创 串口调试回顾

一.通信基础1.按数据传输方式分串行:数据一个挨一个进行收发(单车道)并行:数据可以多个一起收发(多车道)2.按数据传输的方向分单工:只能一方发送,一方接收。(收音机)半双工:双方都可以发送和接收,但同一时刻只能一方发送,一方接收(对讲机)全双工:双方可以同时进行接收或者发送数据。(电话)3.按数据同步方式分同步通信:双方约定一个时钟的节拍来传输数据。(SPI,I2C)异步通信:将数据进行封装,开头有起始信号,结尾有终止信号。(UART)此时就需要引入通信速率概念

2022-02-18 12:48:27 402

原创 学习总结(一)——裸机开发

一.裸机开发模式1.轮询模式void main(){ while(1) { A(); //实现A函数 B(); //实现B函数 }}在main中不断循环,轮询A,B。这样做的缺点是当其中一个函数执行时间过长时会导致另一函数等待过长。2.事件驱动模式也就是利用中断来实现有条件触发,比如按下按键触发中断实现对应功能。void main(){ while(1) { ; }}void A_

2022-02-12 19:08:15 1084

空空如也

空空如也

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

TA关注的人

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