![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
文章平均质量分 93
宁静致远2021
天道酬勤,持之以恒。
发上等愿,结中等缘,享下等福;
择高处立,寻平处住,向宽处行。
展开
-
C语言 sizeof和strlen的区别
我们知道字符串是以 ‘\0’ 为结束标志的,所以char str1[ ] = “hello” 等效于char str2[ ] = {‘h’ , ‘e’ , ‘l’ , ‘l’ , ‘o’ , ‘\0’}。strlen函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止。2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’。类型-该类型所占的空间的大小;原创 2024-04-20 20:18:27 · 975 阅读 · 0 评论 -
C语言 memcpy内存块拷贝函数
memset是一个初始化函数,作用是将某一块内存中的全部设置为指定的值。s指向要填充的内存块。c是要被设置的值。n是要被设置该值的字符数。返回类型是一个指向存储区s的指针。需要说明的几个地方。原创 2024-04-19 19:37:34 · 870 阅读 · 0 评论 -
STM32F407单片机通用24CXXX读写程序(KEIL),兼容24C系列存储器(24C01到24C512),支持存储器任意地址跨页连续读写多个页
通俗的讲就是128Byte就占用了128个地址,一个7bit的数据范围为(0-127)刚好128,所以128Byte的字节地址需要一个7bit的数据来表示。AT24C01,AT24C02,AT24C04,AT24C08,AT24C16,AT24C32,AT24C64,AT24C128,AT24C256…比如AT24C256有512页每页64个字节,15bit的地址数据对其寻址,低6bit(D5-D0)为页内字节单元地址,高9bit(D14-D6)为页地址。四、AT24CXXX页地址与页内单元地址。原创 2024-04-11 15:22:13 · 1079 阅读 · 0 评论 -
STM32F4 IAP跳转APP问题及STM32基于Ymodem协议IAP升级笔记
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-04-10 10:51:05 · 1318 阅读 · 0 评论 -
关于STM32单片机延时微妙(delay_us)函数-hal库
自己外部晶振为8M,查单片机对映的是时钟框图如下,可以看出时钟从外部HSE_OSC来的为8M,经过以一个选择器后,进入PLL锁相环,之后去了AHB PRESC,最后经过一个/8的分频后就是滴答定时器的频率。近段时间调试一个STM32带多个DS18B20传感器,发现这个传感器对时序要求特别高,而使用的固件是HAL库版的,里面没有专门微米级别的延时函数,通不过不断尝试,调通了延时函数,使DS18B20成功跑起来了。写此篇文章来记录本次调试。,所以放心的使用 delay_us 来实现 delay_ms,不。原创 2024-04-08 15:17:37 · 4726 阅读 · 0 评论 -
STM32的NVIC中断以及抢占优先级和响应优先级
抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,如果两个中断同时到达, 则先处理响应优先级高的中断, 响应属性由NVIC_IRQChannelSubPriority 参数配置。第0组 0 0 0 0。原创 2024-04-08 14:02:16 · 825 阅读 · 0 评论 -
基于STM32CubeMX移植freeModbus RTU(从站)-避坑篇
ModbusRTU是通过定时器和串口配合来实现Modbus通信的,所以定时器是决定有没有超时的一大关键问题,由串口设置部分可知,定时器设置是要配合串口设置的波特率食用比较香,所以根据我使用的115200波特率可以得到我定时器设置。13.打开工程,引入STM32MB内的所有头文件,并新建名为MB和MB_Port的组,MB内添加STM32MB文件夹下modbus文件夹内所有c文件以及根目录的demo.c文件,MB_Port内添加STM32MB文件夹下port文件夹内所有c文件,如图所示。原创 2024-04-01 09:28:06 · 1456 阅读 · 0 评论 -
STM32利用AES加密数据、解密数据
1、AES_KEY_LENGTH取值只能是128,192 和 256。3、加密、解密数据长度为AES_KEY_LENGTH/8的整数倍字节。2、密钥和向量表长度为AES_KEY_LENGTH/8个字节。原创 2024-03-15 14:35:25 · 2631 阅读 · 0 评论 -
STM32 JLINK SWD调试器手动复位才能烧写的问题
如果我们使用的代码对SWD口进行了一些配置,导致reset指令无法通过SWD口接收的话,调试器就无法reset MCU。解决办法就是不要复用SWDIO 口,否则使用reset pin。手动写代码的时候,SWDIO我们可以自己把握,不去配置就可以用,所以一般来说都在掌控中。MDK中关于reset的设置比较复杂一般使用normal,如果有兴趣可以通过下链接了解。STM32CubeMX的程序就有问题?只有手动复位的情况下,才能进行烧写。为什么烧录程序一次后就无法连接调试器烧录,一定要手动复位?原创 2024-01-06 16:12:42 · 1167 阅读 · 0 评论 -
利用STM32和可控硅控制220V加热电路
如下图所示,可控硅不受HotPWM1控制,主要原因为电流可以经过可控硅Q1的1和3引脚直接流过,不受MOC3061控制。所以,应该将可控硅的1和2引脚对调,如下下图所示,即可完成控制。原创 2023-12-24 14:36:49 · 3951 阅读 · 2 评论 -
STM32F030C8读取CS1237采集模拟
第二个想到的原因是,硬件CS1237和STM32的电平兼容问题,我的电路CS1237是5V供电,stm32是3V3供电,它们之间SPI通过22欧姆电阻串联。(1) 设置STM32的DOUT端口为INPUT,监测来自CS1237的DOUT电平,一般芯片上电后,CS1237的DOUT会不断地输出高脉冲(示波器测量约20us的高脉冲),代码中要监测到DOUT的”下降沿“,然后才是读写配置和读取ADC转换数值的操作;一顿仔细检查代码,发现了STM32端口配置的”笔误“,修改后,仍然无法正确配置CONFIG;原创 2023-12-13 15:04:56 · 1494 阅读 · 2 评论