STM32G0系列的启动配置与程序下载
文章目录
- 目的
- 启动配置
- 程序下载
- 通过程序修改 nBOOT_SEL
- 总结
目的
STM32G是意法半导体这两年新推出的系列芯片,相比原先的F系列的芯片有很多提升点,将来必将取代F系列芯片的地位。对于新芯片的应用来说能够正确下载与运行程序是比较重要的一点,这篇文章将对 STM32G0
系列芯片的启动配置与程序下载做个简单的说明。
启动配置
STM32G0系列芯片的启动配置相关内容在官方文档《AN5096:Getting started with STM32G0 Series hardware development》第三章中有详细的描述:
启动配置相关内容其实是不多的,下面将对这部分内容做个简单的说明。
STM32系列芯片程序启动方式分为下面三种:
Main Flash memory
从主闪存启动,想要运行我们自己的程序就要选择这种方式;System memory
从系统存储区启动,想要通过串口下载程序就要选择这种方式;Embbeded SRAM
从内存启动;
STM32G0系列芯片通过选项字节(option byte)中的 BOOT_LOCK
、nBOOT1
、nBOOT_SEL
、nBOOT0
这几位加上外部的 BOOT0
管脚的电平来确定启动方式。当 nBOOT_SEL
为 0
时, BOOT0
的值来源于外部的 BOOT0
管脚的电平,低电平为 0
,高电平为 1
;当 nBOOT_SEL
为 1
时, BOOT0
的值来源于 nBOOT0
的值。
芯片启动时会检查闪存地址0x080000000(即用户程序起始地址)处的数据,如果该数据为0xFFFFFFFF则表示用户程序为空,此时不管上面的那些设置程序会从 System memory
启动。
芯片在出厂后只要没有经过程序下载等操作启动时总是会从 System memory
启动。
程序下载
STM32系列系统程序下载通常通过串口进行,而使用串口下载程序重要的是要让芯片从 System memory
启动。
从上一章节内容可以知道芯片在初次烧写时就是从 System memory
启动的,你可以正常使用串口进行连接烧写,不需要关心外部 BOOT0
管脚的电平,如果连接不上就拉低下芯片 NRST
引脚复位下芯片试试。(如果还是连接不上就检查下芯片供电、线路连接、串口模块、串口驱动等试试。)
在初次连接芯片烧写程序前特别需要注意的一点是配置选项字节(option byte)。默认情况下 nBOOT_SEL
和 nBOOT0
均为 1
,也就是当你在这种情况下下载程序后下次芯片上电时将从 Main Flash memory
启动(不管外部BOOT0引脚上的电平是多少)。如果你下载的程序中没有操作对 nBOOT_SEL
和 nBOOT0
进行操作的话你再也无法通过串口重新下载程序或是修改选项字节了。
补救办法有,那就是通过ST-LINK连接芯片进行程序擦写或是修改选项字节。(修改完成后可能需要芯片断电然后重新上电才能通过串口连接)
如果更严重点,程序中把ST-LINK连接需要的 SWDIO
和 SWCLK
引脚用作它用了,ST-LINK也连接不上怎么办?解决方法也有,断开这两个引脚上别的电路连接,然后将芯片的 NRST
引脚保持下拉,这时候 STM32CubeProgrammer 上选择ST-LINK点击Connect,然后断开 NRST
的下拉,芯片会在启动的一瞬间被ST-LINK连接上。
通过程序修改 nBOOT_SEL
使用HAL库进行开发的话可以使用下面程序判断nBOOT_SEL数值并进行修改,注意修改option byte并写入后会重启芯片:
void Flash_OB_Handle(void) {FLASH_OBProgramInitTypeDef optionsbytesstruct;bool UPDATE = false;HAL_FLASHEx_OBGetConfig(&optionsbytesstruct);uint32_t userconfig = optionsbytesstruct.USERConfig;if((userconfig & FLASH_OPTR_nBOOT_SEL_Msk) != OB_BOOT0_FROM_PIN) {userconfig &= ~FLASH_OPTR_nBOOT_SEL_Msk;userconfig |= OB_BOOT0_FROM_PIN;UPDATE = true;}if(UPDATE) {optionsbytesstruct.USERConfig = userconfig;HAL_FLASH_Unlock();HAL_FLASH_OB_Unlock();HAL_FLASHEx_OBProgram(&optionsbytesstruct);HAL_FLASH_OB_Launch();HAL_FLASH_OB_Lock();HAL_FLASH_Lock();}
}
总结
了解上面内容后在STM32G0系列芯片上下载与运行程序应该就没什么问题了,配合STM32Cube等就可以愉快的使用新系列的芯片了。
STM32G0系列的启动配置与程序下载相关推荐
- STM32G0系列的启动配置与程序下载说明
目的 STM32G是意法半导体这两年新推出的系列芯片,相比原先的F系列的芯片有很多提升点,将来必将取代F系列芯片的地位.对于新芯片的应用来说能够正确下载与运行程序是比较重要的一点,这篇文章将对 STM ...
- 单片机小白学步系列(十) 单片机程序下载相关知识
注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考 ...
- 松下PLC FP-XH C30T 和昆仑通态触摸屏 TPC7022Ex 程序下载步骤
松下PLC FP-XH C30T 和昆仑通态触摸屏 TPC7022Ex 程序下载步骤 该步骤主要是方便车间的组装人员,带着电脑去把程序和界面进行下载 一.触摸屏设置 将触摸屏IP修改为和电脑是同一个网 ...
- JetBrains —— JetBrains系列IDE优化配置(提高启动和运行速度)
问题描述 JetBrains产品启动慢,运行不流畅. 问题分析 1.JetBrains产品默认启动配置主要考虑低配置用户,参数不高,导致启动慢,然后运行也不流畅. 2.JetBrains 系列IDE ...
- 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确
重装系统后,腾讯TM无法使用 老是提示"应用程序无法启动,因为程序的并行配置不正确........sxstrace.exe工具" 解决方法: 1. 重新安装TM2013, 安装文件 ...
- 转:如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...
如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题 引用链接 http://blog.csdn.net/pizi0475/article ...
- 因为应用程序配置不对,程序未能启动”--原因及解决方法
因为应用程序配置不对,程序未能启动"--原因及解决方法 http://moogge.spaces.live.com/blog/cns!ab9b00d806d52aed!245.entry 问 ...
- surface 无法更新计算机的启动配置,Surface重装win10操作系统方法,微软surface go、surface pr系列通用...
微软surface系列产品是微软推出的一系列便携式平板电脑二合一产品,是一种全新定义的硬件产品.我们这里用最便宜的 surface go来作例子,讲解一下surface系列重装系统的方法.sSurfa ...
- Cadence Allegro 应用程序无法启动,因为应用程序的并行配置不正确
Cadence Allegro 应用程序无法启动,因为应用程序的并行配置不正确 最近在使用Cadence Allegro时,打不开这个软件,显示如下错误.搜索了很多资料,也下载了很多程序补丁包,均不可 ...
- RStudio配置R程序包的默认下载源
RStudio配置R程序包的默认下载源 # 进入RStudio主页,并点击tools下拉菜单,选择最后面的Global Options选项: # 点击packages按钮: # 选择和自己当前位置叫 ...
最新文章
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
- Android4.1 onTouchEvent分析 (选字模式等)
- mysql脚本的制作_制作脚本实现mysql自动备份
- linux多进程 段错误,关于段错误
- python模型保存save_浅谈keras保存模型中的save()和save_weights()区别
- [导入]DotText源码阅读(2)-工程、数据库表结构
- OC正则表达式的使用
- AcWing 1826. 农田缩减(思维+枚举)
- 基于C#的词法分析关键字识别与变色
- 大宗商品交易平台支持多种交易模式,你了解多少?
- FSA-Net 模型运行——代码调试
- C语言基础之14:结构和其他数据形式
- 保存windows10微软聚焦的锁屏壁纸
- 手把手教你如何高效落地单项目管理 | 一看既会
- i9 12900k参数 i9 12900k核显相当于什么水平
- Java 读取 Excel 模板,将数据填入Excel表格,后转换为PDF文件(实用)
- Adobe Illustrator AI撤回和取消撤回
- 教你如何使用Python写游戏辅助脚本
- 【Python Web】Flask框架(一)快速开发网站
- 网易星球区块链靠谱吗?看着点就知道