![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
stm32
嵌入式填坑指南
之所以选择嵌入式,是想把创造新事物的机会交给自己。
展开
-
STM32时钟系统原理和作用
时钟对于单片机来讲类似于心脏对于人体,单片机通过时钟信号控制单片机工作。原创 2023-01-15 21:22:58 · 3162 阅读 · 5 评论 -
如何设计物联网通信协议?
这是目前我了解的协议方式,如果你们有更好的自定义协议方式,欢迎留言讨论,我也会更新在这篇文章里。原创 2022-10-28 16:33:51 · 1686 阅读 · 0 评论 -
stm32实现json格式传输/ cjson使用
完成后,想使用json时,因为是一个指针,无法直接使用,需要用一个字符串接收格式化后的json格式。此时,直接使用str即可,通过串口输出或者通过4G发送,MQTT发送等等。更复杂的,json格式可以嵌套,这会在步骤3里展示。然后使用添加函数,添加数字和字符要使用不同的函数,在keil里添加cjson.c和cjson.h,首先需要创建一个cjson的指针,用于存储数据,main.c里引用cjson.h。原创 2022-10-28 15:02:19 · 4137 阅读 · 7 评论 -
如何编译C程序生成可执行.exe
本来是计划用VS CODE来编译程序的,但是始终没有调好VS CODE的C语言编译环境和变量,迫不得已,改变了思路,使用gcc,通过命令行来实现C代码编译在安装好gcc后。假设你有一个main.c在红框位置输入cmd,按下回车,你就自动进入了当前目录的命令行了为了编译你的main.c,输入以下指令gcc main.c如果你的main.c使用了其他.c中的代码,就一起编译,比如我的main.c使用了 cjson.h,就需要一起编译gcc main.c cjson.c...原创 2022-03-16 11:13:30 · 5896 阅读 · 2 评论 -
hal库回调函数不工作的问题
HAL库里遇到回调函数不可以在内部使用hal_delay()因为hal_delay()和回调函数的优先级不同,会导致冲突。程序无法继续运行。原创 2021-11-12 21:51:16 · 1132 阅读 · 0 评论 -
MQ系列传感器怎么用,mq2传感器引脚怎么接
由于买的时候买错了,买成了传感器,而不是模块,到手是6根引脚的,在网上找了半天资料,才找明白怎么接线,所以个人使用还是建议直接买模块,省事,贵不了几元钱但是还得讲一下传感器如何接线,MQ系列传感器都是6个引脚,左边三根,右边三根传感器都是基于电阻的,所以需要加热同时,因为是基于电阻的,所以也没有正负之分,只要按照下边所说接线就可以。在接线时,一边三个全部接Vcc 5V,其中中间一个是作为加热电压,其他两个只是作为回路电压;另一边中间接地,旁边两个都是输出。输出只要用ADC转换采集就可以了,原创 2021-10-31 16:29:33 · 8482 阅读 · 0 评论 -
stm32cubemx缺少.s启动文件 .s启动文件所在位置
cubemx生成的工程常见情况就是缺少启动文件startu_f103xxxx.s其实cubemx生成的工程中就有启动文件,只是没有被keil添加到路径当中,启动文件具体路径如下:工程文件夹\MDK-ARM\RTE\Device\STM32F103C6\startu_f103xxxx.s在keil中双击左侧文件夹添加该文件即可添加完成再次编译即可。...原创 2021-10-26 11:55:49 · 6866 阅读 · 4 评论 -
如何计算STM32芯片的数据容量 不同数据类型占用内存大小
在写代码时,每当我申请了一个大容量的变量时,总会很担心flash不够用,因此这次就彻底查清楚数据类型能占用多少bits以stm32f103vet6为例,倒数第三位,vet的e,表示flash容量大小6=32K字节;8=64K字节;B=128K字节;C=256K字节;D=384K字节;E=512K字节所以stm32f103vet6的flash大小为512k1k=1024bytes1bytes=8bits1bit可以存储一个1或者0,在stm32里,不同数据类型所占用的bytes数是多少?ch原创 2021-09-22 17:34:05 · 2262 阅读 · 0 评论 -
stm32 uart4无法接收问题
项目用到了四个串口,usart1,2,3,和uart4,使用了hal库问题:usart1,2,3,都可以正常使用,但是uart4无法进入接收中断,一开始以为stm32的usart和uart的hal库使用有所不同,反复查看代码也没发现问题。中断也开启了解决:最后发现是在STM32CUBEMX中,没有勾选UART4的全局中断,勾选后即可正常使用uart4...原创 2021-09-04 22:02:48 · 1717 阅读 · 1 评论 -
stm32 串口输出 中文乱码
使用hal库函数情况:在使用串口输出中英文混合字符时,遇到了英文和数字正常显示,中文出现乱码的情况,进一步查看,发现串口调试助手显示16进制时,相同位置中文和乱码的16进制都是一样的,所以并不是串口输出错误。原因:每个英文由一个十六进制数组成,而每个汉字由两个十六进制数组成,所以,原因就是显示时,对汉字的组成出现了错误,将前后相邻的两个汉字,各自取了一位16进制数,组成汉字显示,因此出现乱码。解决:在每段串口输出的字符的后面,加上"\r\n",让串口知道,应该在哪里结束,在哪里开始,就不会原创 2021-09-04 15:48:28 · 3404 阅读 · 0 评论 -
教室管理系统(相关技术和设备:stm32、w5500、mqtt)
背景某学校对新建的实验楼有门禁管理需求,因此我们项目组借助KOB门锁(某宝销量较高的电吸锁和电插锁品牌),搭建了前端(微信小程序和网页),服务器(java服务器和mqtt服务器),单片机(基于stm32,用于控制电插锁),实现了一套完整的门禁管理系统。项目背景学校有自己的局域网、服务器和交换机,为了安全和可控的保证,要求必须把我们的服务器和设备都搭建在学校内网里。因此我们的单片机必须通过网口接入交换机,和服务器连接。项目需求who? 知道开门的人是谁when? 知道开门的时间,以及开门原创 2021-08-05 22:42:02 · 640 阅读 · 0 评论 -
stlink和jlink下载失败的原因
背景:由于项目中开发的一套板卡先后设计过两套,程序下载方式从Jlink换成了STlink,有时用新板卡测试,有时用旧板卡测试,经常在Jlink和STlink之间来回切换,多次遇到下载失败的问题。解决办法我遇到的是sw和JTAG下载方式不同的问题依次点击以下图表根据你的原理图,有可能你的设备是用SW下载的,此时把port切换成SW,有可能你的设备是用JTAG下载的,此时把port切换成JTAG。即可正常下载。...原创 2021-08-05 22:13:36 · 1496 阅读 · 0 评论 -
hal库读写flash—(基于项目需求:断电也能保存设备状态)
所需功能:通过4G网络和MQTT下发授权状态,设"S0"和"S1"分别代表授权和取消授权。并将授权状态存储到flash里确保断电不会丢失授权状态。遗留问题:读取数据时正确的,但是用串口输出就变了,不知道为啥,数据定义为ID_NUM=0x1111,输出出来变成了0x3291...原创 2021-06-25 17:17:20 · 650 阅读 · 0 评论 -
C语言_数组间的字符串和十六进制的相互转换方式
网上有很多相关例程,但是都多少有点小错误,这个是我验证过没问题的。用于单片机和stm32的,完美适配。在这里插入代码片char HexToChar(uint8_t hex){ char ch=0; if(hex>0x0f) return -1; if((hex>=0)&&(hex<=0x09)) ch=hex+'0'; else if((hex>=0x0a)&&(hex<=0x0f)) ch原创 2021-03-31 21:19:36 · 622 阅读 · 0 评论