【STM32】标准库 串口下载以及STLINK

这篇具有很好参考价值的文章主要介绍了【STM32】标准库 串口下载以及STLINK。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32的串口下载:

打开FlyMcu,接线就像之前那样接,USART1串口通信,必须是1,其他的不支持串口通信。

stm32 uart 标准库,stm32,单片机,嵌入式硬件

编译之后就会生成HEX文件,而且上面的按钮Select也可以选择生成的位置

搜索串口,选择,然后波特率选择115200. 

stm32 uart 标准库,stm32,单片机,嵌入式硬件

在联机下载程序文件哪里选择HEX文件,在点击开始编程之前,还需要把跳线帽改一下,进入BooeLoader程序,不然就会一直卡在那里。切换引脚之后,要点击一下复位键,因为STM32在刚复位的时候才会读取BOOT引脚,程序运行之后,BOOT引脚是无效的。STM32执行的程序就是,不断接收USART1的数据,然后刷新到主闪存,在接收到数据之后,这时候STM32还处于BOOTLoader的刷机程序中,这时候就要把跳线帽换回来,复位,就会执行程序了。

串口下载的原理:

stm32 uart 标准库,stm32,单片机,嵌入式硬件 

 0x08000000存储的是c语言编译后的程序代码,只要把程序写入这个位置,STM32执行的就是这个代码。把什么程序写入这个位置,STM32就执行什么程序。串口发送的话,就把数据通过串口发送到单片机,刷新到这个位置就就可以了。

但是接收并转存数据,这个操作本身就是一个程序,也就是要用程序实现自我更新。就像机器人给自己换电池一样,但是这是不可能的,所以就要在大机器人之外制造一个小机器人,专门用来换电池,对于这个程序来说,就是BootLoader。它是ST公司写好的一段代码,存储位置是ROM区的最后,1FFF F000,也叫自举存储器,用途是程序的自我更新,用于串口下载,程序不断刷新,BootLoader接收USART1的数据,刷新到程序存储器。这时候主程序处于瘫痪状态,更新完了之后,才会执行新程序。

stm32 uart 标准库,stm32,单片机,嵌入式硬件

如何启动大机器人小机器人,可以通过这个BOOT配置。

主闪存:启动大机器人

系统存储器:启动小机器人

因为这个图下面这句话,所以在重新配置之后,需要进行一次复位

每次换跳帽太麻烦解决方法:

stm32 uart 标准库,stm32,单片机,嵌入式硬件 

想要更新程序,就必须有一个切换小机器人的过程,BOOT0引脚以及RST复位引脚的必须有高低电平的变化,可以设置设置两条线,自动帮我设置两个这两个引脚的电平。 上图右边四个引脚本来是流控的,但是这里不用流控,可以把它当做普通IO口,RTS跟DTR是输出引脚,可以用这两个引脚控制BOOT0引脚以及RST复位引脚,但是要有相应的硬件配件,搜索:STM32一键下载电路。

但是这款最小系统的芯片中没有,所以不能使用它,在小软件下面的选择那几种模式就没什么用了。还是得用跳线帽。

stm32 uart 标准库,stm32,单片机,嵌入式硬件

有一个缓招,就是勾选编程后执行,取消勾选编程到flash时写选项字节,这样在开始编程之后就会自动执行程序,但是在执行之后按复位键,这里又没用了,是一次性的,这个就相当于把数据刷新之后,虽然跳线帽还是处于BootLoader中,也就是SRAM存储器中,但是相当于手动执行了一条跳转指令,执行了FLASH程序,但是复位一下,就相当于重新刷新了BOOT配置,程序没反应了。

读FLASH,就是把芯片中的程序读取出来,.bin是没有地址信息的原始数据文件,.hex是有地址的,使用串口下载的时候,一定要选择.hex文件。

读器件信息,以及清除芯片,

选项字节区:

stm32 uart 标准库,stm32,单片机,嵌入式硬件

 stm32 uart 标准库,stm32,单片机,嵌入式硬件

 这里可以进行相关配置,第一个STM32F1:

stm32 uart 标准库,stm32,单片机,嵌入式硬件

 读保护,就是可以防止程序被偷走,设置成读保护的时候,回到keil下载就会失败,这时候需要回到这里重新设置成非读保护,在取消读保护的时候,芯片内容会被清空,防止被偷。

选项的数据不会根据程序变化而变化,他一直都在,还有一个好处就是可以用上位机很方便的修改,比如FlyMcu活着STLINK Utility。

写保护可以用Flash的每几页单独进行写保护,写保护如果是把前面的几页写保护了,下一次下载肯定出错,因为选项配置的参数只能在Flash刷新时顺便刷新,写保护了,没办法把程序写入单片机了,也就没办法解开写保护了,进入一个死循环,这点需要注意。

stm32 uart 标准库,stm32,单片机,嵌入式硬件

从左到右,打开文件,可选.bin格式的,就是用FlyMcu导出的那种文件,第二个就是存储,第三就是连接,第四就是断开连接,第五就是擦除。

选项配置:Target到Opion bytes,这个读保护以及写保护是立马对芯片生效的,不像上一个软件,需要Flash下载程序才可以。

stm32 uart 标准库,stm32,单片机,嵌入式硬件 

ST-LINK,再选第一个,可以给固件库更新,这时候需要给STLINK重新拔出,然后重新插一下。

 文章来源地址https://www.toymoban.com/news/detail-714126.html

到了这里,关于【STM32】标准库 串口下载以及STLINK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用标准库和HAL库的STM32单片机进行串口通信/解决因例程为HAL库的传感器,而其他模块都是标准库,需要将数据用串口传送给标准库的单片机的相关问题

    (本文使用STM32F103C8T6,在CubeMX里演示用的是RBT6,但实际上引脚是一样的)         本文 着重解决一个大工程中,某些传感器的例程是HAL库的,而其他模块(或算法)都是标准库,导致难以移植的问题。 本文的解决方法是:使用一片单片机用HAL库(CubeMX)配置例程,然后

    2024年02月06日
    浏览(59)
  • stm32基于UART串口实现modbusRTU(软件方式)

     此程序中, 串口通信方式: 115200-n-8-1, modbus协议要求帧与帧之间的间隔必须大于3.5个字符时间间隙作为帧与帧之间的分割.  字符时间计算公式: interval_time = character_interval * 8 / baud_speed * 10 ^ 6 (微秒) 1.1 设置定时器, 超时时间为interval_time. 1.2 设置stm32的uart串口接收数据中断, 每

    2024年02月15日
    浏览(34)
  • K210 UART串口通信介绍与 STM32通信

    目录 K210-UART串口通信相关函数: 使用K210串口的时候需要映射引脚: K210与STM32串口通信  发送单字节: K210端 STM32端 发送数据包 K210端 STM32端  K210的UART模块支持全双工通信,可以同时进行数据的发送和接收。在K210上使用UART串口通信,你可以连接外部设备,如传感器、显示器

    2024年03月23日
    浏览(44)
  • STM32实现UART-CAN融合式高速串口

    STM32的UART硬件电路,在进行线接传输时,一般低于230400bps的波特率,因为单端信号传输的特性,限制了传输距离和传输速度。而在同一块PCB板內进行短距离UART传输,则可以达到2Mbps及至4Mbps的传输速率,所以STM32的UART接口,能支持配置为2M或4M波特率。 如果要实现接线方式的串

    2024年02月04日
    浏览(66)
  • STM32 UART串口通信IDLE空闲中断的使用步骤

    参考了各路大神的资料,蒙蔽了半天,终于学会了,记录一下,以后忘了可以回来复习参考。 一、首先在stm32cube中配置打开对应uart串口的中断 二、工程main函数调用 __HAL_UART_ENABLE_IT(huart1,UART_IT_IDLE);//hal库宏定义,使能串口空闲中断     HAL_UART_Receive_DMA(huart1,data,sizeof(data));//使

    2024年02月12日
    浏览(40)
  • STM32CubeMx+MATLAB Simulink串口输出实验,UART/USART串口测试实验

    STM32CubeMx+MATLAB Simulink串口输出实验

    2024年02月21日
    浏览(42)
  • 基于树莓派4B与STM32的UART串口通信实验(代码开源)

    前言: 本文为手把手教学 树莓派4B与 STM32 的 UART 通讯 ,本次项目采用 树莓派4B 与  STM32  进行串口通讯,将彼此的数据进行互相传输。本篇博客同时提供了基于 YOLOv5-Lite 的目标检测数据联动,即将 树莓派4B 检测到的信息发送至 STM32 ,后续可以通过这些信息进行各种需求上

    2024年02月16日
    浏览(38)
  • # STM32中断方式实现串口通信(标准库)

    主要任务 : 1)当stm32接收到字符“s”时, 停止持续发送 “hello windows!”; 当接收到字符“t”时, 持续发送 “hello windows!”; 2)当stm32接收到字符“stop stm32!”时,停止持续发送“hello windows!”; 当接收到字符“go stm32!”时,持续发送“hello windows!” 实验工具: (1)软件 标

    2024年02月11日
    浏览(32)
  • STM32CubeMX-HAL库-UART串口接收中断回调函数代码分析

            CubeMx中HAL库函数的调用不同于库函数调用,在学习CubeMx串口通信时,不理解HAL库中的回调函数是怎么被调用的,于是查看每个的定义,参考其他人写的博客,总算弄明白了HAL库中断调用与库函数不同之处。写下这篇博客一是加深自己的理解,二是希望对不理解HA

    2024年02月02日
    浏览(51)
  • (stm32之HAL库)UART工作在DMA模式要打开串口中断吗?

    最近学习了stm32(F4xx)的串口在DMA模式下的使用,期间以ST官方提供的例程进行参考学习,发现其初始化过程中是打开了UART的中断的,而且HAL库中stm32f4xx_hal_uart.c文件中的DMA模式使用说明里也有这么一句话: 即在非循环模式下(也就是发完一次数据就停止的常用模式)需要配置

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包