自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wanglong3713的博客。

学习,记录,提高,分享。

  • 博客(37)
  • 资源 (3)
  • 收藏
  • 关注

原创 51单片机看门狗定时器配置

单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试;

2024-06-27 22:27:53 517

原创 51单片机定时器中断配置

单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试;

2024-06-22 20:19:47 874

原创 瑞萨RL78/G13单片机R5F100FE内部RTC驱动程序

使用单片机为R5F100FE,IDE为CS+ for CA,CX V4.00.00,编译工具为CA78K0R。瑞萨RL78/G13系列芯片没有外接电池的引脚,没有后备寄存器,因此在系统断电后无法保存时间;如果要实现断电后RTC继续计时,必须通过其他方式给系统切换供电,否则上电会将RTC时间也初始化;因此,该系列芯片的RTC功能用来做实时时钟的话,功能不全,但用来做中断,唤醒STOP模式,会比较好用。

2024-05-16 20:04:02 1063

原创 字节按位前后反转C语言程序

一个字节可表示的数据只有256种,如果将0x00~0xFF按位反转的值做成表格,使用查表法,则效率更高了。uint16_t i;for (i = 0;i < 0x0100;i++)

2024-04-05 11:19:35 1038

原创 实时时钟芯片DS1307单片机C语言驱动程序

DS1307是一款非易失性实时时钟(RTC)芯片,采用IIC总线接口进行通信,可以提供秒、分、时、日、月、年等时间和日期信息。DS1307还具有控制和配置寄存器,可以通过读写这些寄存器来设置和调整时间、日期和其他功能。主要特点如下:1.提供秒、分钟、小时、日、月、星期及年计时,带闰年补偿,有效期至2100年;2.56字节通用RAM,写次数不受限制;3. IIC串口通信;4. 可编程方波输出信号;5. 自动电源失效检测和切换电路;6. 电池备份模式下,振荡器运行功耗低于500nA;

2024-02-01 21:33:09 2036

原创 实时时钟芯片DS1302单片机C语言驱动程序

DS1302 是 DALLAS(达拉斯)公司推出的一款涓流充电时钟芯片。主要特点:1.可计算秒、分、时、日、日期、星期、月、年的能力,并有闰年补偿功能;2.内部含有31个字节静态RAM;3.采用串行数据传送方式,3线接口;4.与TTL兼容,Vcc=5V;5.时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式;6.工作电压范围宽:2.0~5.5V;7.功耗低,2.0V时工作电流小于300nA。8.采用8脚DIP封装或SOIC封装。

2024-01-14 10:23:17 2213 2

原创 单片机RTC及时钟芯片的时间到底从哪一年起始?

1.文中用到的设备,初始年份大多为00年,即四位年份yyyy格式的后两位,且当作闰年处理,如果是指1970年的话,1970年不是闰年;无论是单片机还是RTC专用芯片,没有一个手册中提到1970年1月1日这个时间,因此,说RTC功能的起始时间是1970-01-01 00:00:00的,不准确,也没有依据;2.对于类似STM32F103C8T6这样,RTC功能只有一个计数器,没有年月日时分秒这种时间寄存器的,需要由软件算法配合来计时,起始时间可以任意;3。

2024-01-01 23:30:30 2261

原创 BCD码与十进制数转换C语言程序

BCD码(Binary-Coded Decimal‎),也称为二-十进制代码,是一种将十进制数转换为二进制数的编码方式,用4位二进制数来表示1位十进制数中的0~9这10个数码。BCD码使用四个位Bit来储存一个十进制的数码,使二进制和十进制之间的转换转换变得非常快捷和简单。

2023-12-26 20:27:20 2476

原创 STM32单片机输出频率及占空比可调的PWM波

1.使用定时器的PWM输出模式,同一个定时器的不同通道输出的PWM频率必须相同,如果想要同时输出不同频率的PWM,则需要使用不同的定时器,或者使用同一个定时器的输出比较模式。2.PWM模式下,同一个定时器的不同通道,输出的PWM占空比可以不一样。

2023-12-16 21:57:07 11374 4

原创 C语言求数组中出现次数最多的元素

1、程序不考虑时间和空间复杂度,并不一定是最优的算法,只是流程简单,易于理解;2、该方法利用了数组的下标当作与元素对应的值,因此只适用于数组元素为非负整数的情况;3、输入数组的长度任意,新建的数组为变长数组,所以要用C99的标准;4、新建的数组下标当作元素的值,实际相当于给输入数组进行了排序,所以找到第1个最大值,跳出循环,如果有出现次数相同的元素,则返回较小元素;

2023-11-13 19:58:55 3569 1

原创 用逻辑分析仪观察串口Uart数据波形

只讨论嵌入式编程中较为常用的异步串行接口(Universal Asynchronous Receiver/Transmitter, UART),TTL电平。串口的参数一般有:1.,数据传输速率,单位bps(bits per second),即每秒传输的位数,常见的波特率有9600bps、19200bps、115200bps等;如果波特率为115200bps,则传输一个bit的时间是1/115200s≈8.68us;2.

2023-11-02 21:08:40 2736

原创 STM32F103单片机内部RTC实时时钟驱动程序

STM32F103系列的RTC模块,没有年月日及时间寄存器,只有一个32位计数器,每1秒加1,没有年月日及时间寄存器,需要软件配合,才能实现日历、时钟功能;由于只有计数功能,可以任意时间作为基准时间(即开始时间),用UTC时间戳(以1970年1月1日00:00:00为开始时间),可以使程序通用性更强;以上UTCToUnix和UnixToUTC两个函数是以标准UTC时间为基础的,实际北京时间为UTC+8,相差8个小时,如果需要计算北京时间,需要加8个小时;水平有限,以上如有疏漏之处,欢迎指正。

2023-10-24 20:38:20 3370

原创 51单片机STC8G使用printf函数的方法

原来是因为Keil C51的printf函数与标准C语言的printf函数不同,可在keil的菜单“Help-μVision Help”的帮助文件中查看关于printf函数的介绍,在使用C51的printf函数打印%d/i/u/o/x/X格式时的数值时,需要指定该变量的存储格式l/L/b/B。测试程序,主频为为22.1184MHz,串口1配置为9600bps,打印“Hello World!可看出输出的并不是我们想要的数值0,1,2…,而是放大了256倍,②16位数据,格式为%hd;,其他型号请自行测试;

2023-03-11 19:50:12 2568

原创 STM32单片机Keil MDK重定向printf函数

在项目开发中,使用printf函数通过串口打印调试信息,需要对printf函数进行改写,重定向到使用的串口号,该例中使用单片机STM32F103C8T6进行试验,工程文件使用STM32CubeMX生成,开发环境是Keil MDK,使用了HAL库。IAR环境下重定向printf函数可参考。

2023-02-23 21:22:23 1567 1

原创 PID算法C语言程序STM32单片机控制水温实验(二、积分项改进)

该水温控制系统,传统PID与改进PID效果差不多,可能是因为该系统过于简单;另外P、I、D参数选取未经过大量实验,可能不是最优的,本例中的积分I参数非常小,所以积分项的改进效果不明显,但目的在于总结积分项的改进方法与C语言实现。有兴趣的可以试验整定参数,达到更好的效果。如有错漏之处,欢迎指正。

2022-10-24 20:19:00 3814 4

原创 STM32单片机使用ADC功能驱动手指检测心跳模块

1.实际测试发现,该模块环境影响较大,白天、夜晚,开灯、关灯都会对数据有很大影响,且数据经常会漂移;2.只是读取了数据,做了简单滤波,从时域图中,找不出什么规律;3.如果只是用来学习ADC的使用,可以使用本模块练手,也可用这些数据来学习滤波算法、傅里叶变换等,但是想用来比较精准的检测心跳,还是不推荐。httpshttpshttpshttps。...

2022-07-23 00:13:17 1896 1

原创 x24Cxx系列EEPROM芯片C语言通用读写程序

在之前的3篇文章中,介绍了x24C01~x24C512的读写程序,相关文章如下:1.IIC驱动:4位数码管显示模块TM1637芯片C语言驱动程序2.AT24C01、AT24C02读写:AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序3.AT24C04、AT24C08、AT24C16读写:AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序4.AT24C32、AT24C64、AT24C128、AT24C256、AT24C512读写:AT24C32、A

2022-06-15 20:02:33 2997 8

原创 AT24C32、AT24C64、AT24C128、AT24C256、AT24C512系列EEPROM芯片单片机读写驱动程序

在前两篇博文中,分别记录了AT24C01、AT24C02,以及AT24C04、AT24C08、AT24C16芯片的读写驱动,先将之前的相关文章include一下:1.IIC驱动:4位数码管显示模块TM1637芯片C语言驱动程序2.AT24C01、AT24C02读写:AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序3.AT24C04、AT24C08、AT24C16读写:AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序本文将带来AT24C32、AT

2022-06-01 20:11:39 23957 18

原创 AT24C04、AT24C08、AT24C16系列EEPROM芯片单片机读写驱动程序

一、概述在之前的一篇博文中,记录了AT24C01、AT24C02芯片的读写驱动,先将之前的相关文章include一下:1.IIC驱动:4位数码管显示模块TM1637芯片C语言驱动程序2.AT24C01/AT24C02读写:AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序本文记录分享AT24C04、AT24C08、AT24C16芯片的单片机C语言读写驱动程序。二、芯片对比介绍型号容量bit容量byte页数字节/页器件寻址位可寻址器件数WordAddress

2022-05-22 12:22:52 14452

原创 AT24C01/AT24C02系列EEPROM芯片单片机读写驱动程序

一、概述EEPROM是嵌入式开发中比较常用的芯片,用来保存参数及掉电记忆的数据等,最常用的是ATMEL的AT24Cxx系列的IIC接口,也有其他厂家的如罗姆Rohm的BR24Gxx系列、ST的M24Cxx系列等。该系列芯片容量不等,如AT24C01即为1kbit,AT24C02为2kbit…本文记录AT24C01/AT24C02的读写驱动。用到的IIC总线读写驱动可参考本人的另一篇博文4位数码管显示模块TM1637芯片C语言驱动程序。二、芯片介绍型号容量bit容量byte页数字节/

2022-05-04 23:01:29 12454 11

原创 PID算法C语言程序STM32单片机控制水温实验(一、位置型PID)

一、概述实验所用器材均为容易买到的设备,主要有STM32F103C8T6最小系统板、DS18B20温度传感器、继电器模块、TM1638显示模块、电加热棒(12V/80W)、直流电源适配器(12V/10A),再找一个小一些的玻璃杯(水250ml),所有设备如下图。二、系统功能由于采用普通继电器控制加热棒,继电器不允许频繁启停,因此将控制周期设为1min,即每1min计算一次当前1min内电加热棒需要开启的时间(占周期的百分比),通过控制每一个控制周期内电加热棒的开启时间,使水温在设定温度附近恒定;因温

2022-03-31 23:09:44 15858 14

原创 DS18B20温度传感器单片机C语言驱动程序

一、概述代码参考了正点原子的例程,并经过测试,开发环境:IAR单片机:STM32F103C8T6二、代码/******************************************************************************* * 函数名:Port_SetMode * 功 能:GPIO设置输入或输出模式 * 参 数:*GPIOx 引脚组号 GPIO_Pin引脚号 u32Mode输入或输出模式 * 返回值:无 * 说 明:无

2022-01-14 22:56:23 2153

原创 TM1638数码管显示板(8数码管+16按键)单片机C语言驱动程序(按键功能)

一、概述在中,记录了TM1638显示板的显示功能,本文分享该显示板的按键的读取。二、原理图分析如上图,16个按键,每个按键的一端连接TM1638的K1、K2,另一端连接SGn,即KSn。再看手册(手册下载数码管显示板驱动芯片TM1638数据手册中关于按键扫描的部分:与8按键8数码管8LED的显示板不同的是,该显示板可以有组合按键,那在写读按键程序的时候,返回的按键可以不是一个独立的按键,所以可以采用一个两个字节的数据,每一位代表一个按键,正好可以存储16个按键的值。三、主要代码1. 按键

2022-01-14 22:53:51 3642

原创 TM1638数码管显示板(8数码管+16按键)单片机C语言驱动程序(显示功能)

一、概述模块如下图,8位共阳数码管,16个按键,8个led灯。笔者采用的MCU是STM32F103C8T6,IAR开发环境,使用了HAL库。二、源代码该模块的大部分驱动程序与另一款TM1638驱动的8个数码管、8个LED、8个按键的显示板的程序一致,该模块驱动程序见TM1638显示板(8数码管+8LED+8按键)驱动程序(显示功能)2.1 端口设置函数/**********************************************************************

2022-01-13 22:07:14 9205 2

原创 TM1638驱动显示板(8数码管+8LED+8按键)单片机C语言程序(按键功能)

一、概述上一篇文章记录了TM1638驱动的显示模块的显示功能C语言程序,详见TM1638显示板(8数码管+8LED+8按键)驱动程序(显示功能),本文分享按键的驱动,以及按键的去抖动等操作。模块如下图:笔者采用的MCU是STM32F103C8T6,IAR开发环境,使用了HAL库。二、驱动程序1. 硬件分析首先,通过上图,可以看出按键是连接到K3上的;再看上图手册中对按键功能的描述,可知所有按键连接到同一个K引脚上,不能实现组合按键,按键仅能单个使用。读取按键的4个BYTE时,我们需要把K

2022-01-13 20:51:51 6293 4

原创 STM32单片机C语言程序使用KNN算法对乳腺肿瘤分类

一、概述之前在《STM32单片机使用KNN算法实现鸢尾花分类》中使用了KNN算法对鸢尾花进行分类,程序采用C语言编写,运行于STM32F103单片机上,效果较好。本篇文章将采用KNN算法对乳腺肿瘤进行分类,看看单片机处理高维数据的表现。数据来自于UCI,下载地址https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Diagnostic%29,整理好的数据已上传到资源breast_cancer_wisconsin(diagnos

2022-01-12 20:36:05 1389

原创 常用距离计算单片机C语言程序

一、欧几里得距离(Euclidean Distance)1.定义欧氏距离,即空间中两点的直线距离,设空间中X的坐标为Y的坐标为X与Y之间的欧式距离为2.C语言程序/******************************************************************************* * 函数名:EuclideanDistance * 功 能:计算空间中两个点的欧几里得距离 * 参 数:*u16DataA点A的坐标,数组 *u16Da

2022-01-12 20:33:16 1214

原创 瑞萨RL78系列单片机CS+(Cube Suite+)下重定向printf函数

一、测试环境瑞萨Cube Suite+ for CA,CX,Build Tool: CA78K0R,芯片:RL/78系列R5F100FF(其他版本软件、芯片请自行测试)各版本如下图:二、代码1.改写putchar函数/******************************************************************************* * 函数名:putchar * 功 能:改写putchar函数 * 参 数:无 * 返回值:无

2022-01-11 22:13:57 2433 7

原创 在瑞萨CS+(Cube Suite+)使用中文注释及中文字符串的方法

一、测试环境瑞萨Cube Suite+ for CA,CX V4.00.00,其他请自行测试。二、设置1.在菜单Tool中,选中Options,在弹出的窗口中,进行如下图的设置:2.按下图步骤,在工程的Build Tool处右键,在“Kanji character code of source”处选择“ECU_JP(-ze)”...

2022-01-11 21:57:06 2221

原创 瑞萨Ez-cube仿真器引脚与4线接口对应关系

瑞萨仿真器Ez-cube有8个引脚,如下图,但在实际使用中,可能仅需要连接4个引脚至MUC端,对应关系如下表:仅需要1、2、3、8脚,其中1、3分别为地和电源,2接Reset,8接Tool0。

2022-01-11 21:47:25 2926

原创 TM1638显示板(8数码管+8LED+8按键)驱动程序(显示功能)

一、概述之前记录过TM637数码管显示模块的驱动C语言程序(详见4位数码管显示模块TM1637芯片C语言驱动程序),本文分享一下天微电子的另一款数码管按键驱动芯片TM1638的单片机C语言驱动程序。模块如下图,8位共阴数码管,8个按键,8个led灯,某宝、某多价格10元以内。笔者采用的MCU是STM32F103C8T6,IAR开发环境,使用了HAL库。二、源代码2.1二级标题三级标题...

2021-11-26 23:11:32 9762 8

原创 4位数码管显示模块TM1637芯片C语言驱动程序

一、概述TM1637 是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口、数据锁存器、LED 高压驱动、键盘扫描等电路。芯片手册已上传到资源,需要的可以下载,链接https://download.csdn.net/download/wanglong3713/40836173。使用的显示模块在某宝、某多价格很便宜,4位数码管,带时间点,适合做电子时钟,另外还有不带时间点的,使用的芯片是GN1637,还有AIP1637,实际与TM1637通用,驱动程序也可以通用。

2021-11-15 23:55:20 19114 23

原创 PSoC开发环境下重定向printf函数

一、适用环境IDE: PSoC Creator 4.3ToolChain: ARM GCC 5.4-2016-q2-update(Cypress provided)二、代码添加以下代码,即可调用printf函数打印输出想要的信息:int _write(int file, char *ptr, int len){ int i; file = file; for (i = 0; i < len; i++) { SW_Tx_UART_De

2021-11-06 18:01:10 558

原创 STM32单片机使用KNN算法实现鸢尾花分类

一、概述最近在利用业余时间学习机器学习算法,由于笔者是嵌入式软件工程师,想将机器学习算法在单片机端实现,KNN算法(k-Nearest Neighbor,K最近邻算法)是为数不多的可在单片机端实现的机器学习算法。通过检索发现,在单片机端实现KNN算法的例子较少,仅有几个用单片机实现手写数字识别的。本例程硬件使用的是STM32F103C8T6最小系统板,IAR开发环境,STM32CubeMX进行配置并生成工程文件,鸢尾花数据集是从UCI机器学习官网https://archive.ics.uci.edu/

2021-10-24 01:41:40 5070 6

原创 STM32单片机驱动全彩LED模块遍历百万种颜色

一、使用硬件分享一个趣味的实验,单片机PWM驱动全彩LED模块,快速遍历100万种颜色。单片机为STM32F103C8T6,三色LED模块如下图(图片来源于网络)二、STM32CubeMx配置配置TIM3的PWM通道1、2、3,对应引脚分别为PA6、PA7、PB0,这里的计数周期根据自己的时钟频率配置,我这里配置的PWM频率为2KHz,计算方法为,时钟频率48MHz,48分频即图中PSC的值为48-1=47为1MHz,计数周期即图中Counter Period(自动重装寄存器ARR的值)为500-

2021-10-16 18:26:28 3149 1

原创 通用定时器实现STM32单片机微秒级延时函数

一、前言在实际应用中,经常用到延时函数,而HAL库的延时函数是毫秒级的,虽然可以自行修改,但该函数使用的地方较多,修改不慎可能会引起其他问题,所以本文使用一个定时器,实现微秒级精确延时,不影响其他使用。该方法使用STMCubeMX配置,基本适用于所有STM32系列芯片。二、STMCubeMX配置1. 时钟配置我们使用TIM3实现延时函数,首先看手册中,TIM3是挂在APB1上的在STM32CubeMX中,配置完时钟频率,找到APB1的定时器的频率。本例中为48MHz。2.定时器配置定时器

2021-10-04 18:11:18 5672 2

原创 STM32单片机IAR环境下重定向printf函数

STM32单片机IAR环境下重定向printf函数一、引言在项目开发中,使用printf函数通过串口打印调试信息,需要对printf函数进行改写,重定向到使用的串口号,该例中使用的单片机是STM32F103C8T6,工程文件使用STM32CubeMX生成,开发环境是IAR,使用了HAL库。关键词:STM32,IAR,printf重定向二、工程配置1. 使能Usart在STM32CubeMx中使能需要的串口,本例使用Usart3,配置如下图:2.修改库文件配置在IAR中,选择菜单Projec

2021-10-01 00:01:09 3003

breast_cancer_wisconsin(diagnostic).rar

UCI机器学习数据集,Breast Cancer Wisconsin (Diagnostic) Data Set,已整理,有Excel格式文件

2022-01-09

数码管驱动芯片规格书-TM1637_V2[1]

四位数码管模块TM1637驱动芯片手册

2021-11-12

鸢尾花数据集 Iris_data.rar

UCI机器学习数据集,鸢尾花数据,包含.dat格式文件,又增加了xlsx格式; iris.names文件为数据说明

2021-10-01

空空如也

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

TA关注的人

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