您现在的位置是:首页 >技术交流 >STM32 10个工程篇:1.IAP远程升级(三)网站首页技术交流

STM32 10个工程篇:1.IAP远程升级(三)

青青豌豆 2024-06-17 10:19:56
简介STM32 10个工程篇:1.IAP远程升级(三)

       本想着周六去更新IAP远程升级(三),但是周三单位突然通知团建周六去爬水长城,晚上回来已经精疲力竭,打开电脑不由地点开网易云音乐听着听着感觉很乏,去床上躺了会可一觉醒来已经夜里三点,于是调整一下周日晚上开始撰写这篇博客,言简意赅不想赘述过多,不论写什么样的技术博客笔者还是追求能用最通俗易懂的话把复杂绕脑的概念和逻辑整理清楚还原给读者。

       IAP远程升级的前两篇博客详细介绍了IAP升级的背景知识和工作原理,那么这篇博客直接开门见山即如何去实现IAP升级了,在这篇博客笔者会带大家一步步地用ST推出的STM32CubeMX,通过图形化界面的方式配置下豌豆开发板的stm32f103rct6初始化设置,在这里我们只用到了单片机的一个串口,采用了DMA+空闲中断的方式接收来自PC端上位机发送的报文。

      如图1所示是stm32f103rct6的内部时钟树设置猛地看上去确实非常复杂,其实本质就是把外部的8Mhz时钟通过内部PLL锁相环倍频为72Mhz的系统时钟,当然这里存在一些概念如HSE(高速外部时钟)来源为外部晶振速度8MhzPLLCLK(锁相环时钟)来源为HSIHSE经过倍频所得HCLKAHB高速总线时钟):来源由系统时钟分频得到,速度最高为72MCFGR中的HPRE控制;PCLK1APB1低总线时钟):来源为HCLK分频得到,速度最高为36M APB1总线上的外设提供时钟由RCC_CFGR时钟配置寄存器的PPRE1位控制;PCLK2APB2高总线时钟):来源为HCLK分频得到,速度最高为72M,为APB2总线上的外设提供时钟由RCC_CFGR时钟配置寄存器的PPRE2位控制。

1 stm32f103rct6的内部时钟树

      如图2所示是豌豆开发板stm32f103rct6的硬件原理图,如图3所示是STM32CubeMX下配置stm32f103rct6的晶振时钟和UART1引脚,这里我们做好硬件上的引脚匹配即可,当然STM32CubeMX也非常人性化地给出了选择,用户在图形化界面配置时也能看到每个引脚所支持的不同定义。

2 豌豆开发板stm32f103rct6的晶振时钟和串口1电路图

3 STM32CubeMX配置stm32f103rct6的晶振时钟和UART1引脚

       如图4所示我们在STM32CubeMX下配置stm32f103rct6的调试方式是JTAG(5 pins),需要注意的是这里需要勾选否则生成的代码不支持JLINK或者STLINK下载器在线仿真调试。

4 STM32CubeMX配置stm32f103rct6的调试方式

        如图5所示STM32CubeMX下对UART1的系统配置,这里主要配置了三个关键点即:1. 串口波特率和位宽大小;2. 串口DMA通道;3. 串口的引脚定义。

5 STM32CubeMX配置stm32f103rct6UART1

      如图6所示是STM32CubeMX配置stm32f103rct6的初始化工程HAL库版本,在这里我们选择MDK-ARM V5版本即KEIL所支持的版本,选择最新的HAL库版本,直接单击GENERATE CODE即可生成初始化代码,如图7所示是STM32CubeMX下生成的stm32f103rct6初始化工程。

6 STM32CubeMX配置stm32f103rct6的初始化工程HAL库版本

7 STM32CubeMX下生成的stm32f103rct6初始化工程

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。