目的
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系列的启动配置与程序下载说明相关推荐

  1. 单片机小白学步系列(十) 单片机程序下载相关知识

    注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考 ...

  2. 松下PLC FP-XH C30T 和昆仑通态触摸屏 TPC7022Ex 程序下载步骤

    松下PLC FP-XH C30T 和昆仑通态触摸屏 TPC7022Ex 程序下载步骤 该步骤主要是方便车间的组装人员,带着电脑去把程序和界面进行下载 一.触摸屏设置 将触摸屏IP修改为和电脑是同一个网 ...

  3. JetBrains —— JetBrains系列IDE优化配置(提高启动和运行速度)

    问题描述 JetBrains产品启动慢,运行不流畅. 问题分析 1.JetBrains产品默认启动配置主要考虑低配置用户,参数不高,导致启动慢,然后运行也不流畅. 2.JetBrains 系列IDE ...

  4. 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确

    重装系统后,腾讯TM无法使用 老是提示"应用程序无法启动,因为程序的并行配置不正确........sxstrace.exe工具" 解决方法: 1. 重新安装TM2013, 安装文件 ...

  5. 转:如何解决VC 应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe问题...

    如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题 引用链接 http://blog.csdn.net/pizi0475/article ...

  6. 因为应用程序配置不对,程序未能启动”--原因及解决方法

    因为应用程序配置不对,程序未能启动"--原因及解决方法 http://moogge.spaces.live.com/blog/cns!ab9b00d806d52aed!245.entry 问 ...

  7. surface 无法更新计算机的启动配置,Surface重装win10操作系统方法,微软surface go、surface pr系列通用...

    微软surface系列产品是微软推出的一系列便携式平板电脑二合一产品,是一种全新定义的硬件产品.我们这里用最便宜的 surface go来作例子,讲解一下surface系列重装系统的方法.sSurfa ...

  8. Cadence Allegro 应用程序无法启动,因为应用程序的并行配置不正确

    Cadence Allegro 应用程序无法启动,因为应用程序的并行配置不正确 最近在使用Cadence Allegro时,打不开这个软件,显示如下错误.搜索了很多资料,也下载了很多程序补丁包,均不可 ...

  9. RStudio配置R程序包的默认下载源

    RStudio配置R程序包的默认下载源 # 进入RStudio主页,并点击tools下拉菜单,选择最后面的Global Options选项: #  点击packages按钮: # 选择和自己当前位置叫 ...

最新文章

  1. Linux df -h 显示磁盘空间满,但实际未占用满——问题分析
  2. linux dma拷贝数据到用户态,图解:零拷贝Zero-Copy技术大揭秘
  3. [projectEuler.net]12
  4. 通过IDEA查看某个类的继承关系
  5. 博士申请 | 北京理工大学宋承天老师组招收目标感知与识别方向博士生
  6. spring boot整合redis实现统计访问量
  7. qtextedit 默认文案_QT-纯代码控件-QSplitter(分裂器)
  8. 外虚内实是什么意思_广东潮州“茶”文化浓厚,为什么“工夫茶”常被谬传“功夫茶”?...
  9. SQL Server使用sp_rename重命名约束注意事项
  10. 提前祝各位:圣诞节快乐~
  11. 初次接触ruby的困惑
  12. Session销毁方式
  13. BGP 基本配置参考
  14. Flash 3D之旋转文字
  15. 物联网的主要特征是什么,目前主要有哪些应用?
  16. 我与U盘病毒抗争的那几年——一个特别的进程U盘病毒
  17. XShell下载安装并连接阿里云
  18. 微信小程序开发抽取HTML中数据的最快方法是正则表达式,而不是循环
  19. NYOJ 20 吝啬的国度(深搜)
  20. Quartus II IP生成报错

热门文章

  1. 【第75题】给定一个字符串,将它转换成整数
  2. 注册时要求获取手机短信码的实现(java)
  3. 【故障检测问题】基于matlab免疫算法求解故障检测问题【含Matlab源码 196期】
  4. 使用Windows Server 2003实现高可用故障转移群集(1)
  5. 《machine learning in action》机器学习 算法学习笔记 决策树模型
  6. carla创建地图(四)基于ue4创建地图
  7. Python爬虫:让“蜘蛛”帮我们工作
  8. 书法文化类毕业论文文献都有哪些?
  9. python实现自动拨打电话_python 实现手机自动拨打电话的方法(通话压力测试)
  10. 互联网快讯:微信视频号公布MCN招募计划;极米投影产品双十一持续热销;亚马逊计划再发射4538颗卫星