- 博客(80)
- 资源 (5)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 毕设分享:基于STM32两轮自平衡小车 含源码、原理图及PCB文件
毕设分享:STM32两轮自平衡小车系统设计与控制 含源码、原理图及PCB文件
2020-10-14 09:29:56
36985
109
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 自用frp服务器分享及客户端配置连接教程
What is frp?frp是一个快速反向代理,可帮助您将NAT或防火墙后面的本地服务器暴露给Internet。 截至目前,它支持tcp&udp以及http和https协议,其中请求可以通过域名转发到内部服务。
2019-07-03 09:49:15
18032
2
原创 开发库介绍
CMSIS库不是HAL库,也不是标准库,它是一种与厂商(比如ST公司)无关的软件层,可以在不同的微控制器上使用。标准库(Standard Peripheral Libraries)是ST公司为STM32微控制器提供的一种固件函数包,它封装了STM32所有外设的寄存器操作和中断处理,提供了一套统一、简洁、易用的API函数接口,方便开发者使用STM32的各种外设功能。LL库(Low-Layer,底层)是ST公司最近(也不是最近,六七年了)新增的一种底层库,它与HAL库捆绑发布,文档也是和HAL文档在一起的。
2023-10-24 23:56:23
739
原创 【FDCAN】STM32G0B1+FDCAN+HAL库调试记录
文章目录前言一、实验环境?二、CAN和FDCAN区别1.介绍2.FDCAN有哪些优点(个人角度):三、CAN发送1.STM32CubeMX配置截图:2.用户需要自己添加的内容:3.调试结果:四、CAN接受1.滤波器类型采用掩码方式:1)添加如下函数实现:2)调试结果:总结前言本文是本人以STM32G0B1为平台,记录下调试总结,仅供参考,若有不对的地方,还劳烦指正。一、实验环境?1)MCU:STM32FG0B1VCT62)CAN工具:广成CAN总线分析仪双通道can转usb模块USBCAN
2021-07-28 14:27:12
6955
4
原创 【CubeMX】外设选择LL库还是HAL库
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言以前听闻过LL库相比HAL精简,HAL库很臃肿。曾几何时想过使用LL库来降低程序固件大小,但是翻看了官方自带的参考例程发现LL库的例程少之又少,而且CubeMX生成的也是基于HAL库的,奈何一直没有找到如何生成LL库的选项。今天无意随手都点了点,看了看,结果就发现了这张图:提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:
2021-07-27 21:40:17
1688
原创 【STM32】解决引脚复用成PWM开漏输出峰值达不到外部上拉的电压
项目场景:因为项目的一个功能需求,需要输出一个高电平为5V的PWM。问题描述:发现输出的PWM高电平最高只有4V不到的样子,很接近于4V。实测过普通开漏输出,高电平完全可以达到外部上拉的5V。HAL库也试过了,也是完全可以达到5V的,但是标准库的配置一直上不去。 原因分析:仔细对比发现没啥异常,配的都是对的,但是可以肯定的是,肯定还是配置,因为HAL库可以实现,那就说明一定还是某个地方配的有问题。最后才知道开漏输出脚必须配置为浮空,不配置的话实测默认的是内部上拉。1.内部下拉:2.内部
2021-06-22 17:25:11
3017
3
原创 【STM32】HAL库调用HAL_SPI_Transmit出现HartFault问题
项目场景:项目场景:MDK:问题描述:HAL库调用硬件SPI发送函数HAL_SPI_Transmit会导致程序进入HartFault // flash 页大小(字节)#define FLASH_SPI_PAGE_SIZE (256)static uint8_t write_buffer[FLASH_SPI_PAGE_SIZE + 4];spi1_write(W25QXX_CHANNEL, (uint8_t *)write_buffer, (length + 4));
2021-05-18 16:07:48
5221
7
原创 【STM32】Debug下禁用看门狗
问题背景:因为工程中加入了独立看门狗IWDG,但是有时候需要硬件仿真单步调试设置个断点啥的,这时候看门狗就会因为没有及时喂狗复位,弹窗报错,整个仿真都不能继续了。实测JLINK会弹窗如下图所示,但是亲儿子STLINK没有任何弹窗…之前一直都是在debug的时候关掉看门狗宏定义,但是这样麻烦不说,会有一个隐患存在就是,真正的项目工程是需要看门狗的,我们随意关掉的话,终究会存在debug完之后忘记再重新打开看门狗的问题,所以我们最好的办法是能够在debug这个特定的条件下,冻结掉看门狗,就像低功耗下冻结看门
2021-01-18 15:11:24
6357
3
原创 【STM32】解决J-Flash烧入固件无法正常运行
项目场景:因为需求,需要通过J-Flash将两个Bin文件合并之后烧录。问题描述:合并bin文件之后,全部擦除在烧录进去程序跑不起来,不知道啥状态。原因分析:起初怀疑过合的Bin文件有问题,合了Hex文件,可是仍然一样不正常,怀疑过两份bin文件地址不对,对了对也没发现问题,最后发现默认是不复位的。解决方案:需要勾选Start application...
2021-01-13 20:47:43
2507
原创 【年终总结】我的2020年
2020年,一个好顺口的年份。曾经我们都以为它很遥远,现如今它已经不知不觉的从我们身边走过,离得越来越远。想起来曾经2013小高考前写过的一句话,无论你是否情愿,时间老人已经无情的将我们推到了这里。脑海里能浮现一个画面,很小的时候过年,年份一年一年涨,2003年,2004年…想起来高中老师张晓明张老师的一句话(我不敢照镜子,因为我每次照镜子会发现自己苍老了许多)。是啊,今年也是我第一年感觉自己老了,居然有了抬头纹,笑起来有鱼尾纹等等,原来我也是一个已经要奔三去的人了。2020年2月24日离家开始上班,然后
2021-01-10 16:11:29
283
3
原创 【STM32】串口唤醒低功耗
项目场景:MCU:STM32G070MDK:V5.25Software Pack:Keil.STM32G0xx_DFP.1.0.0问题描述:单片机进入低功耗之后,想让另一个设备通过串口把它唤醒,可以正常唤醒,但是唤醒之后,串口收发貌似就不正常了。 原因分析:串口进入低功耗之前,是把串口的接收引脚配置为了外部中断输入脚,唤醒之后再重新配置为串口,但是这个配置流程需要正规一点,需要HAL_UART_MspInit一下才可以正常。解决方案:在唤醒之后,按如下顺序对串口重新配置:HA
2020-12-31 17:38:18
1347
原创 【STM32】解决加入flash擦除、读写之后程序“卡死“的问题
问题描述:工程整个函数每隔5ms刷新一次,但是一家入flash操作串口发送就有问题了,接收不到串口发送出来的数据,然后整个函数拖慢了很多。 原因分析:主函数每5ms去擦除、独写flash导致,flash操作需要时间,实测20ms操作一次就不会再有问题。解决方案:提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).send
2020-12-25 20:57:31
6613
原创 HAL库的官方历程
需求:我们以前用标准库的时候是一个压缩包,然后压缩包中有官方的历程,我们使用片上资源的时候会去参考查询,但是ST推出HAL库之后搭配的是STM32CubMX自动生成的,我们也需要参考官方历程,这时候就需要HAL库的官方历程。路径:1.打开STM32CubeMX,然后电机Help下的Updater Settings2.找到如下路径:3.然后顺着刚刚路径后面继续打开如下路径:\STM32Cube_FW_G0_V1.2.0\Projects\NUCLEOG070RB\Examples\PWR\PWR
2020-12-17 15:08:42
2130
1
原创 解决STM32单片机的ADC采样不准确偏移的问题
项目场景:用STM32CubeMX生成的ADC采样测量电压。单片机:STM32G070MDK:V5.25问题描述:采样回来的数值Debug看总是大了些许,几个通道都是这样,具体测试情况如下:实际电压值采样得到的电压值误差1.5051.5640.0592.2482.2940.0461.7491.7950.0463.2763.3010.0340.0980.1710.073 原因分析:检查发现没有ADC校准,STM32Cu
2020-12-17 14:56:05
8139
3
原创 STM32G070单片机 PD0 PB15引脚内部下拉使用需要主意
项目场景:STM23G070单片机的PD0引脚作为开漏输出的时候,外部接了一个51K上拉电阻到5V,想让PD0开漏输出高的时候是5V,开漏输出低的时候是0V。问题描述:STM23G070单片机的PD0引脚作为开漏输出的时候,外部接了一个51K上拉电阻到5V,单独测试PD0的时候是可以正常的,开漏输出高的时候5V,低的时候可以到0V,但是一旦PD1推挽输出输出高之后,情况就变了,在PD1推挽输出高情况下,PD0开漏输出高的时候却始终只有2.4V,输出低的时候是0V,正常的。 原因分析:查阅S
2020-12-17 14:36:54
1519
原创 解决串口开启DMA接受却只能接收到第一个字节之后就再也接受不到数据的问题
设备:单片机:STM32G070 MDK:V5.25问题描述:发现串口接受不到数据,只能接受到第一个字节。 UART4_InitVariables(); HAL_Delay(200); HAL_UART_Receive_DMA(&huart4, UART_DMA_RXBuf, UART_RX_BUF_SIZE); 原因分析:在单片机执行完串口初始化之后,并没有立马开启DMA接收,在这个时间差之内如果有数据发过来就会导致这个问题解决方案:在完成串口初始化
2020-12-16 20:06:16
6684
7
原创 解决office一打开就显示正在更新,过一会就报错的问题
问题描述:一打开office就显示正在更新,请稍后,过一会就弹窗报错。 解决方案:1.win+R输入services.msc2.将Microsoft Office即点即用服务设为自动 如果第二步中已经是自动状态,先禁用一下,再重新设置为自动...
2020-12-12 14:45:13
7893
6
原创 【STM32】外部中断不可以同PIN
问题背景:在做低功耗外部中断唤醒的时候,发现PD2配置成外部中断唤醒之后,之前配置的PB2不可以正常唤醒了,注释掉PD2的外部中断GPIO配置之后,又可以正常唤醒。问题原因:查阅资料发现STM32的外部中断即使是不同PORT,但是只要是同PIN也是不可以同时配置为外部中断使用的。我们看STM32CubeMX发现配置的时候也是配置不了的,是互斥的。 STM32外部中断不可以共用PIN
2020-12-10 13:33:18
755
3
原创 示波器分析IIC波形图
测试设备:1.MCU:STM32G02.IIC设备:lis2dh12(ST的三轴加速度计)3.示波器:普源RIGOL DS1054Z知识点:1.开始信号:SCL在高电平期间,SDA由高变低即为开始信号2.停止信号:SCL在高电平期间,SDA由低变高即为停止信号3.应答信号ACK: 八位数据位发送完之后,第九个时钟即是ACK,0表示有ack,1表示nack4.发送八位数据位的时候,电平变化总是发生在低电平期间,SCL为高电平器件不可以变动,只有开始信号和停止信号是在SCL为高器件变动5.空闲
2020-12-07 11:37:43
5792
4
转载 关于Altium Designer 16 导出BOM(元器件清单)出现空白的解决办法
用的是Altium Designer 16,不知道别的版本是不是也存在这个问题。由于下面这个选项:导出输出的表格文件里没有任何元器件:把下图的勾勾去掉后:生成的BOM就没啥问题,应该是软件的BUG。网上找不到解决办法,所以记录一下。 ...
2020-12-02 19:35:45
4952
1
原创 STM32低功耗(STM32G0+HAL库+STOP模式+中断唤醒)
1.进入低功耗:HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);2.进入低功耗之前需要先将外部中断唤醒配置好 GPIO_InitStruct.Pin = DATA_433M_Pin; GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(DATA_433M_GPIO_
2020-12-01 21:36:34
11073
10
原创 解决低功耗之后无法下载程序
问题背景:在调试低功耗的时候,错误的将单片机一上电就进入低功耗,通过外部复位引脚让其复位,虽然可以成功,但是立马又进入了低功耗,唤醒的时间太短,毫无卵用。解决办法:因为单片机烧写的SWD口一直接的都是 VCC SWCLK SWDIO GND,想起来JLINK上面是有复位引脚的,所以找出来把它接到了单片机的外部复位引脚上即可解决。结果:...
2020-12-01 11:00:27
947
1
原创 重构外部中断回调函数来区分外部中断具体引脚做具体对应的任务(STM32+CubeMX+HAL库+EXTI外部中断)
1.STM32CubeMX配置如下:这里GPIO mode一共有六种分别是:(1)上升沿触发外部中断(2)下降沿触发外部中断(3)边沿触发外部中断(4)上升沿触发外部事件(5)下降沿触发外部事件(6)边沿触发外部事件2.CubeMX生成的代码:/** Configure pins as * EXTI*/void MX_GPIO_Init(void){ __HAL_RCC_GPIOD_CLK_ENABLE(); //使能GPIO时钟 GPIO_InitTypeD
2020-12-01 10:38:49
1670
1
原创 电池一些基本概念
以四串的48V12AH铅酸电池举例:(1)48V指的是额定电压,实际电压在大概在42到58V之间。(2)12AH指的是电池容量,意思就是以12安的电流能放电1小时。(3)一节铅酸电池内部有6cell,也就是6个单元,每一个2V左右。(4)WH=VAH=48V12AH=576WH(5)单节cell约24mwh,四串铅酸电池有24cell,所以WH=24WH乘以24,约等于576WH...
2020-11-30 13:57:16
2939
原创 示波器分析485波形图
测试设备:1.MCU:STM32G02.485芯片:3peak3.示波器:普源RIGOL DS1054Z知识点:1.A高B低:12.B高A低:03.起始信号: 由1变0一个bit时间4.停止信号: 由0变1一个bit时间5.空闲态: 一直是1(A高B低)6.发送顺序:先发送低位再发送高位,比如发送0x53(01010011),先发送低四位,再发送高四位,并且低四位发送也是先从低到高发,所以示波器看到的应该是(11001010)数据格式说明:1.波特率:48002.起始位:1位3.
2020-11-27 11:13:42
9721
10
转载 J-Link RTT的使用(原理 + 教程 + 应用 + 代码)
MCU:STM32F407VE MDK:5.29IAR:8.32目录--点击可快速直达目录写在前面什么是RTT?RTT的工作原理RTT的性能快速使用教程高级使用教程附上测试代码2019年12月27日更新--增加打印float的功能写在前面本文介绍了J-Link RTT的部分使用内容,很多地方参考和使用了J-Link的官方资料,有的地方可能翻译的不太准确,请见谅。如果想了解更加准确详细的内容,请点此处。什么是RTT?RTT(Real Time Transfer)是一种用于嵌入式中...
2020-11-23 13:43:27
5662
原创 STM32G0系列通过HAL库读取CPUID
STM32G070的CPUID地址:/*!< Device Electronic Signature */#define PACKAGE_BASE (0x1FFF7500UL) /*!< Package data register base address */#define UID_BASE (0x1FFF7590UL) /*!< Unique device ID register base addre
2020-11-17 10:40:08
1934
1
原创 解决MDK仿真时候弹框Programming range...问题
问题描述: debug时候弹框如下:问题分析: 打了太多断点具体操作:一键去掉所有断点即可
2020-10-19 14:18:10
1633
1
原创 【九号电动车】六种开机方式
1.原厂NFC刷卡开机2.APP远程2G开机(只要有网络的地方都可以,无距离限制)3.一座启动(手机蓝牙和车连接获得授权之后,屁股坐上去即可自动开机,当然前提是座垫检测打开)4.一键启动(手机蓝牙和车连接获得授权之后,按一下右把手的多功能按键即可实现一键启动)5.密码开机(类似于密码锁一样,在没有获得蓝牙授权下,长按右键开关大于3秒,即可进入密码开机模式,速度码表的个位点亮,这时候短按一次按键数字加1,0到9循环,按住刹把确认当前位,当输入正确的四位数密码即可实现开机)6.手机、手环等开机(将NF
2020-09-21 14:43:38
26572
原创 九号电动车OTA功能
前言:九号电动车相加入了物联网的功能,而车接入网络会有一个好处就是类似于手机系统更新一样可以给车更新系统。OTA,全称是Over-the-AirTechnology,字面意思就是空中升级,是指终端设备通过无线网络下载远程服务器上的升级包,对系统或应用进行升级的技术。一、升级内容全车OTA,可以支持车身四大件进行空中升级,其包括电机控制器固件、ECU固件、仪表固件、BMS固件。一、升级方法1.蓝牙OTA手机刚连上车辆之后,如果有新的固件可更新,那么就会弹出对话框提示更新。2.2G网络OTA车上
2020-09-18 16:24:58
7935
原创 九号电动国标车B&C系列区别于传统电动车之新颖功能全览
前言:希望当你看完能够对九号电动车有一种全新的认知。1.OTA功能(1)蓝牙OTA(2)物联网模块OTA2.开座桶(1)蓝牙开座桶(2)最后如果对车型有功能不明确或者不会使用等问题都可以call我…...
2020-09-18 13:51:04
18171
原创 解决AD原理图编译警告(Off grid Net Label xxx at xxx )
问题描述:AD编译原理图,警告如下:解决办法1.双击对话框中对应的Message,跳转到出现警告的网络处2.选中网络,然后右击选择Align——Align To Grid即可3.重新编译即可消除
2020-09-16 11:09:29
15283
1
原创 STM32CubeMX配置RTC——基于(STM32G070+STM32CubeMX+HAL库+RTC)
实验目的:通过STM32CubeMX进行简单配置生成HAL库实现内部晶振RTC。一、STM32CubeMX配置如下:1.时钟树配置:因为板子没有外部RTC晶振,所以只能使用内部32KHz晶振,时钟树配置如下:2.RTC配置:(1)关于Asynchronous Predivider value 和 Synchronous Predivider value填写多少,请看下面:因为内部晶振是32KHz,所以毫无疑问应该选择LSI=32KHz即:Asynchronous Predivider
2020-09-09 16:02:35
5406
2
原创 STM32CubeMX配置ADC模拟看门狗实现掉电保存——基于(STM32G070+STM32CubeMX+HAL库+ADC模拟看门狗)
实验目的:通过STM32CubeMX进行简单配置生成HAL库实现ADC模拟看门狗,以达到单片机掉电保存Flash。一、STM32CubeMX配置如下:其中两个边界电压分别配置了3880和1509,当超越这个边界就会出发ADC中断,再ADC中断中保存flash即可。所以我们还需要打开ADC中断:二、生成的HAL库源码如下: /** Configure Analog WatchDog 1 */ AnalogWDGConfig.WatchdogNumber = ADC_ANALOGWAT
2020-09-09 09:19:02
3331
5
原创 STM32CubeMX配置硬件CRC——基于(Keil5+HAL库+STM32G070+STM32CubeMX+硬件CRC32)
实验目的:通过STM32CubeMX进行简单配置生成HAL库实现硬件CRC32校验的功能。一、STM32CubeMX配置如下:二、生成的HAL库源码如下:三、Debug结果如下:对字符串"DA0000000000"进行CRC32计算结果如下:四、在线工具CRC校验结果如下:完美,收工!...
2020-09-08 19:03:54
3668
2
原创 LCD驱动芯片——BL55072A驱动程序
初始化子程序:START0x7C; I2C子地址0xEA;ICSET,软件复位芯片0xC0;MODSET,关显示0xF0;BLKCTL,关闪烁0xA3;DISCTL,80Hz Line inversion,High Power mode0xE8;ICSET,清复位bit1STOP显示刷新子程序:START0x7C;I2C子地址0xF0;BLKCTL,关闪烁0xA3;DISCTL,80Hz Line inversion,High Power mode0xE8或0xEC;ICSE
2020-09-03 15:02:49
2511
2
原创 STM32单片机IAP模式不容易进入,跟上位机通讯计数很慢,IAP不能连续刷固件,IAP刷入固件时间较长等问题
问题: IAP模式不容易进入,跟上位机通讯计数很慢,IAP不能连续刷固件,IAP刷入固件时间较长。原因:IAP不容易进入和不能连续IAP的问题是因为加速度计初始化放在了串口初始化之后,而加速度计初始化需要一点时间,在连续IAP的时候,刚更新完,单片机正在重启,串口初始化刚完成,上位机跟它通信,刚开始接受上位机发来的字节,然后就开始了加速度计初始化,就导致串口接受异常,不能在正常接收,所以IAP不容易进入和不能连续IAP。通讯计数慢和下载时间过长是因为,加速度计读取时间比较长,拖慢整个IAP时间。解决办法
2020-08-21 14:21:11
642
原创 用Media Player播放器将音乐CD翻录下来
前言: 因为特别喜欢CD里面的一首歌,但是网上找了半天也没找到,索性找一找方法把他翻录下来了。第一步:
2020-07-30 23:18:49
798
Everything1.3.4.686.rar
2020-09-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人