![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STM32
RiverFormSky
这个作者很懒,什么都没留下…
展开
-
【GD32】GD32工程打开后报错
GD32工程打开后报错,Third Party Device Support for xxxxx。解决办法:修改工程后缀。原创 2022-10-10 11:19:00 · 1100 阅读 · 0 评论 -
【STM32】printf重定向到串口以及打印调试信息
//寄存器方式int fputc(int ch, FILE *f){ while((USART1->SR & USART_SR_TXE) == 0){} USART1->DR = ch; return ch;}//HAL库方式int fputc(int ch, FILE *f){ uint8_t temp = ch; HAL_UART_Transmit(&huart6, &temp, 1, 2); return ch;}//打印调试信息宏定原创 2021-11-04 11:47:45 · 273 阅读 · 0 评论 -
【STM32】RCC复位和时钟控制器
RCC的关键在于时钟树。STM32CubeMx提供了时钟树的配置,但是我们还是需要自己明白,代码里面的时钟配置流程是怎么样的,如果改了晶振,我们需要怎么改动RCC的配置来适配晶振。有几个概念是比较容易混淆的:1、PLL是什么?PLL的主要作用是对时钟进行倍频,然后把时钟输出到各个功能部件,STM32F4有两个PLL,主PLL和专用PLL,如下图所示。我们主要看主PLL,它的倍频时钟源可以是HSI或者HSE,如下图所示。它的时钟输出有两路,一路是PLL48CK,一路是PLLCLK。PLLCLK用原创 2021-05-18 17:14:56 · 2380 阅读 · 8 评论 -
【STM32】CortexM0单片机中的非对齐访问造成的HardFault
1、问题引入和结论在CortexM0单片机中,在使用指针进行内存访问的时候需要特别留意访问地址的合法性问题,否则稍有不慎就会进入HardFault,痛苦不堪。这里先将结论抛出来:1、u8类型的指针,读写任何地址均是合法的,不会进入HardFault2、u16类型的指针,读写地址必须是2的倍数,否则会进入HardFault3、u32类型的指针,读写地址必须是4的倍数,否则会进入HardFault我们针对以上三个结论分别做测试。PS:本试验涉及到结构体的字节对齐知识点,如果有疑惑的地方可以查看:结原创 2020-06-01 16:53:34 · 3027 阅读 · 1 评论 -
【STM32】结构体的字节对齐和大小端
文章来源于:https://www.cnblogs.com/heart-flying/p/9556401.html,我在原文的基础上自己做了一些验证以及思考,以作为自己的学习记录,方便日后回顾。这篇文章讲得简单明了,解决了我很久以来的疑惑,因此万分感谢,如有侵权的地方请私信我删除。1、测试平台本次实验的平台以32位CortexM0单片机,不同的平台的实验结果可能是不一样的,但是思路都一样。2、基础概念先介绍三个概念:自身对齐值、指定对齐值、有效对齐值。自身对齐值:数据类型本身的对齐值,例如char原创 2020-06-01 16:52:08 · 2824 阅读 · 1 评论 -
【STM32】HAL库学习笔记
系统时钟一般用STM32CUBE自动生成。GPIO输出void LED_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStruct; __GPIOF_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStr原创 2020-05-16 00:25:46 · 1089 阅读 · 0 评论 -
【LwIP】同一个局域网内有两台设备的MAC地址相同
如果这2台主机,连接的是交换机,交换机会记忆主机的MAC与交换机端口一一绑定关系,也意味着在任何时候只能有一个MAC映射表条目指向主机A、或主机B。假设主机A的出向流量到达交换机,交换机将MAC指向A。瞬间之后,主机B的出向流量到达交换机,交换机将MAC指向B。稍后,主机A的返程流量到达交换机,交换机查询MAC地址表,发现指向B。交换机将应该发给主机A的返程流量,发给了主机B。主机B发现...原创 2020-05-12 14:52:43 · 10299 阅读 · 0 评论 -
【STM32】内部Flash掉电数据处理策略
版权声明:本文为CSDN博主「简一商业」的原创文章,我只是在原来文章的基础上增加了一些个人的理解,方便以后回顾,如有侵权请联系我进行删除。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/liwei16611/article/details/887649681、原因由于FLASH的擦除和写入的特性,如果在擦除中掉电或者写入时掉电或者复位(以下简称为掉电),有可能会出现失败的情况,下次再上电读取就会出错。擦除的时候掉电:不能保转载 2020-05-12 14:36:41 · 3838 阅读 · 0 评论 -
【STM32】以太网DMA描述符
说明:整篇文章讲了STM32的以太网驱动是如何工作的,重点记录了我学习的时候的一些疑惑,未经同意请勿转载,谢谢!1、什么是以太网DMA?学过STM32的同学都应该知道DMA就是不需要CPU的参与就能够实现内存和外设之间的数据交换,同样的,对于STM32互联型单片机的以太网DMA的作用也是如此,它的作用就是在不需要CPU的参与下,实现内存和以太网外设的数据交换。用通俗一点的话来表述,就是我们将...原创 2020-02-12 22:03:15 · 9375 阅读 · 14 评论 -
【FATFS】Fatfs读目录支持长文件名
背景:在使用Fatfs文件系统的时候,发现文件名一旦超出8.3这格式的时候,就会出现乱码的现象。分析:经过查找后发现,8.3格式就是短文件名的命名格式,8是指文件名或目录名的主体部分小于等于8个字符,3是指文件名或目录名的扩展部分小于等于3个字符中间以 . 作为分割,即类似88888888.333类似的文件格式。因此这个bug显然是由于系统长文件名和短文件名造成的。但是,我们查找了FATF...原创 2019-03-11 19:42:34 · 2572 阅读 · 0 评论 -
【STM32】STM32不能全速运行
很久没有玩STM32的开发板了,今天重新捡起来玩了下,发现下载程序以后代码时钟跑不起来,点个灯都点不了。在线调试的时候无法全速运行,跑不动。后来发现原来是启动方式搞错了,跳帽没设置好。将BOOT0和BOOT1都设置为接地以后就OK了。...原创 2019-06-07 23:22:50 · 1773 阅读 · 0 评论 -
【LwIP】让LwIP拥有PING其他设备的能力
本文的前提是单片机的LWIP已经跑起来了,能够被外部设备ping通,在此基础上,新增让单片机ping外部设备的功能。首先,我们需要创建ICMP控制块,在mian函数前创建一次即可。struct raw_pcb *ping_pcb;extern unsigned char pingEchoReply;uint8_t icmp_pcb_init(void){ ping_pcb = raw...原创 2019-06-18 19:38:23 · 2665 阅读 · 8 评论 -
【STM32】STM32无法下载程序硬件排查方法
在排除了所有软件配置问题的基础上,如果还是下载不了程序,就可以考虑是硬件的问题。(1)首先确认接线是否正确,VCC,SWDIO,SWCLK,GND(2)如果电平正确就要检查芯片是否有问题,方向是否焊错,VBAT、VDD_1、VDD_2、VDD_3、VDDA、REST这几个引脚是否都为高电平,按道理如果电路没问题,这几个引脚电压都在3.3V左右,如果电平不对可能是焊接问题或者芯片损坏。(2.1...原创 2019-06-14 16:09:21 · 4238 阅读 · 2 评论