自定义博客皮肤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)
  • 收藏
  • 关注

原创 STM32输入捕获采集超声波模块HC-SR04响应的高电平

所用单片机:STM32F103C8T6。

2025-03-17 22:58:33 1056

原创 Freemodbus实现一主多从

RS485电气协议和Modbus软件协议-CSDN博客,Modbus协议本身简单,但是想用软件实现是很复杂的,而Freemodbus是一个开源的库(只有从机代码开源),这个库已经实现了Modbus通信协议的大部分内容,比如3.5个字符空闲中断等等。我们只需要学会移植这个库,实现自己的逻辑代码即可。这是下载Freemodbus库的官方网址,代码在GitHub上,国内可以使用加速器访问,比如Steam加速器(现在叫WattToolkit)将里面的GitHub加速勾选就可以访问了。

2025-01-19 22:48:29 2353

原创 RS485电气协议和Modbus软件协议

图3.1 Modbus软件协议Modbus支持三种传输报文,ASCLL码是传输字符、RTU是传输二进制或十六进制数据、TCP是以太网用的。图3.2 Modbus报文Modbus协议本身是比较简单的,但是如果要自己用软件写代码去实现,就很复杂了,这里可移植freeModbus库,从机库是开源的。

2025-01-16 15:44:05 1196

原创 ADC相关算法以及热敏电阻测温

本文章介绍在使用STM32F103片上外设ADC时,可能会用到的一些算法,平均值滤波算法、中位值滤波算法、快速排序算法、二分查找法。并且实现了使用热敏电阻测量温度,串口打印显示。使用到的资源如下:PA0用于热敏电阻的ADC,PB10和PB11用于串口。

2024-12-28 18:55:57 1504

原创 STM32ADC独立模式单通道采集实验

本次实验用的板子是STM32F103C8T6,使用标准库开发,使用ADC1的通道1即PA1口采集k一个502可调电阻动触点上的电压,VCC是3.3V,使用串口3打印信息显示在上位机串口助手上。本次实验只是为了说明ADC 的工作原理和底层寄存器的配置。代码和所用资料放在下面的链接里面了。

2024-11-24 23:29:57 1708

原创 STM32F103C8T6实时时钟RTC

STM32F103C8T6外部低速时钟LSE(一般为32.768KHz)用的引脚是PC14和PC15,所以这两个引脚一定不要再外接其它的电路,比如按键、LED灯之类的,会导致LSE时钟频率出错甚至不起振。RTC内的CNT计数器就可以用来存储时间戳,然后在软件内将时间戳转换为日历时间。

2024-11-21 22:52:48 3349 2

原创 STM32定时器输入捕获应用实例:红外遥控

接收完4字节后,做数据校验,判断用户码的两个字节是否为遥控器手册上写的字节,判断数据码codeBuf[2]和codeBuf[3]是否互为反码,都成立表示codeBuf[2]确实是遥控码值。根据ir_drv.h头文件里的的API接口函数原型,我在ir_drv.c中的任务就是实现红外按键的码值获取,而红外遥控发送的NEC协议由引导码+用户码+数据码组成,引导码9ms+4.5ms是固定的,用户码是用于识别不同厂家的遥控器防止干扰,数据码就是我们想要获取的按键码值。1、按下按键的1,蓝色灯亮,按下按键2,蓝灯灭;

2024-11-17 10:03:54 1109

原创 STM32定时器输入捕获测量周期

使用的IO资源:1、定时器1的输出比较通道2,PA8输出2KHz,即周期500us,占空比250us的pwm信号2、定时器2的输入通道2,PA1接收此PWM,捕获通道2捕获周期3、串口3打印信息实现现象:1、串口打印PWM的周期数据,显示在串口助手。备注:1、如果使用软件清除CNT计数器则周期测量有1us误差;2、如果使用硬件清除CNT计数器则周期测量误差很小;仅提供输入捕获文件的代码,如下所示。

2024-11-15 10:17:32 636

原创 STM32定时器:PWM输入模式测量周期、脉宽

STM32F103C8T6,标准库,使用定时器2的通道2即PA1产生2KHz频率,250us脉宽的PWM信号,使用定时器1输入通道1即PA8接收这个PWM信号,捕获通道1捕获周期,捕获通道2捕获脉宽。使用串口3打印信息,显示到串口助手。只提供定时器PWM输入捕获驱动代码,如果需要完整代码,评论区私信。

2024-11-14 15:58:34 1690

原创 STM32定时器输出比较:PWM模式

使用标准库,配置STM32F103C8T6定时器1输出比较通道1和通道4,PWM模式的驱动。现象就是定时器1输出两路相同频率的PWM驱动LED呼吸灯。

2024-11-12 16:47:06 1360

原创 STM32定时器实现计时功能

STM32定时器实现定时功能。

2024-11-06 15:09:37 1145

原创 STM32外部中断

下图生动形象地说明了中断是什么意思。在STM32F10X用户手册的第九章有详细地叙述中断,表9.1.2中断和异常向量表,阴影部分是内核异常,其它的是外设中断优先级是指硬件默认优先级,数字越小级别越高;优先级类型,固定表示优先级不可在软件里设置;这个地址是四个字节的,用来保存中断服务函数的地址,也就是说RESET复位的地址0x0000 0004~0x0000 0007这四个字节里保存的就是函数名(地址)Reset_Handler。

2024-11-04 16:43:52 974

原创 STM32串口空闲中断配合DMA接收数据

讲解了串口空闲中断配合DMA实现数据的接收。

2024-11-03 16:25:13 3050

原创 解读STM32串口中断接收数据帧的驱动函数(上)

分析了串口中断接收数据,Gpio引脚初始化部分的函数,在底层究竟配置了那些寄存器,是如何实现配置操作的。

2024-11-02 16:41:32 1179

原创 使用简单的git指令管理代码

什么是Git工作目录,举个例子, 在桌面新建一个文件夹:GitTest。在文件夹内右键选Git Bash Here。输入指令git init创建本地版本库,git init此时在GitTest内会生成一个.git文件夹,那么在GitTest内除了.git的其它内容都是工作目录。

2024-10-19 17:33:40 1310

原创 Systick定时器配合函数指针变量实现裸机任务调度框架

Systick定时器配合函数指针变量实现裸机任务调度框架及其代码实现

2024-10-19 12:25:51 434

原创 Cortex-M3及以上32单片机使用内核DWT实现微秒级延时

Cortex-M3及以上32单片机使用内核DWT实现微秒级延时的详细说明和代码实现。

2024-10-17 22:42:38 3488

原创 STM32无法烧录程序,出现Flash download failed - Target DLL has been cancelled

如果你是使用的STM32cubeMax自动生成代码,并且你的板子之前都可以正常烧录程序,但是就在烧录了STM32cubeMax自动生成的代码,你的板子无法再使用jlink或者ST-link烧录程序了,那么极有可能是程序中隐藏了一条代码关闭了SW和JTGD调试。①BOOT0拉低(BOOT0下拉从FLASH启动),点击KEIL的DOWNLOAD前先按下板子上的复位键不放,然后。之后你的板子就可以正常使用jlink或stlink等烧录程序了。(2)之后你需要想办法把你修改过的代码烧进你的板子里。

2024-09-28 03:59:08 2013 1

原创 51单片机学习记录-十进制与BCD相互转换

介绍了两位十进制数转换为对应BCD码的算法之一的原理

2024-05-30 14:36:34 402

原创 51单片机学习记录-容易写错的串口中断请求标志位TI

B站学习江协科技51单片机P20;串口中断请求标志位TI

2024-04-02 18:12:24 701 1

原创 51单片机学习记录-数据类型的数值范围导致的错误

B站学习江协科技51单片机P18节;Keil5编程Debug一直得不到正确结果;错误有关C语言数据类型的表示范围。

2024-04-01 20:43:56 312 1

原创 解决Ubuntu终端apt-get update出错

今天在终端使用apt-get update命令频频报错,鼓捣了一上午终于解决。

2023-12-11 15:14:53 2537 3

Cortex-M3及以上32单片机使用内核DWT实现微秒级延时

Cortex-M3及以上32单片机使用内核DWT实现微秒级延时

2024-10-19

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

TA关注的人

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