STM32,下载HAL库写的代码后J-Link识别不到芯片,必须要按住复位才能下载?

问题描述:最近在学STM32的HAL库,据说可以统一STM32江湖,前途无量。最近一段时间参照STM32CubeMX和原子的资料自己学着建了两个HAL库的工程模板,F4的还好说,F1的出现了一个玄学问题:

芯片为STM32F103C8T6,下进HAL库编写的工程后J-Link就识别不到芯片了,下载也是,只有J-Link读取时按住复位才可以。更神奇的是用标准库的代码却没问题,具体表象就是下进标准库的代码,然后HAL库的代码可以正常下载,但是HAL库的代码一旦下进去,标准库和HAL库的代码就都不能通过正常手段下载了。这很明显是软件问题。

经过查资料得知,用cubemx配置的代码禁止了swd端口。

解决方法:

在【STM32CubeMX】中配置【SYS->Debug】为【Serial Wire】

代码表现为:

在“stm32f1xx_hal_msp.c”中

禁止SWD
 /** DISABLE: JTAG-DP Disabled and SW-DP Disabled
  */
  __HAL_AFIO_REMAP_SWJ_DISABLE();

使用SWD
 /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled
  */
  __HAL_AFIO_REMAP_SWJ_NOJTAG();

附:HAL库用户程序文件描述

原文地址:https://www.cnblogs.com/Luad/p/10623669.html

时间: 2024-08-10 17:51:57

STM32,下载HAL库写的代码后J-Link识别不到芯片,必须要按住复位才能下载?的相关文章

STM32使用HAL库实现串口通讯——实战操作

功能需求: (1)对接收的字符串原样返回(每10个字符一次). (2)发送一个字符串完成后改变LED的状态. 1.创建工程 使用的是F407Discovery,4个LED对应PD12-PD14. (1)使用外部高速时钟 (2)推挽输出4个LED输出端口 (3)使用usart2 (4)外部8M,使用HSE,频率设置为最高(168MHz,这个可随便) (5)如下,设置用中断 (6)设置使用中断(在usart2中断下边的是外部中断,我测试的时候用的可不用管) (7)点击这个小齿轮生成工程 2.程序设计

当程序员写完代码后,看完感同身受……

如果你是程序员,相信看完后,你会默默点个! 从此循环,估计可能到头了-- 微信关注"蜗牛新视界",带你玩不同.  

STM32在HAL库下的PWM需要注意的点

一.TIM的框图 ETR: ETRP: ETRF: TRGO: ITR0   ITR1   ITR2   ITR3: TIF_ED: TI1FP1   TI2FP2: TGI: TRGI: CK_PSC: CK_CNT: UI: U: TI1    TI2    TI3    TI4: CC1I   CC2I    CC3I    CC4I: IC1PS   IC2PS  IC3PS   IC4PS: OC1REF    OC2REF    OC3REF    OC4REF: DTG: OC1 

STM32 IIC双机通信—— HAL库硬件IIC版

参考传送门 关于IIC的原理这里我就不多说了,网上有很多很好的解析,如果要看我个人对IIC的理解的话,可以点击查看,这里主要讲一下怎样利用STM32CubeMx实现IIC的通讯,经过个人实践,感觉HAL库的硬件IIC要比标准库的稳定.好了,下面就从STM32CubeMx 配置开始一步步实现IIC通讯. STM32CubeMx的配置,这里关于新建工程的步骤我就不细说了,如果还不会操作STM32CubeMx 的可以点击链接查看, 这里主要对IIC的配置进行说明. 了解IIC的都知道,IIC通信有主从

STM32标准外设库、 HAL库、LL库

工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST最近才添加,目前支持的芯片也偏少.各库如下所示: 其中STD库和HAL库两者相互独立,互不兼容.几种库的比较如下: 目前几种库对不同芯片的支持情况如下: 上图中,LL库目前有部分芯片不支持,官方计划2017年逐步完善. STM32Snippets 它是代码示例的集合,直接基于STM32外设寄存器,可在文档和软件包中使用.

STM32 HAL库和LL库的区别

上次开发一个项目,使用一个小容量的STM32 ARM CORTEX核心的单片机,使用STM32CUBEMX自动生成配置代码,正准备编写程序的时候,发现容量竟然有6K多.这个容量在使用大容量FLASH的单片机时不感到什么,可是使用小容量单片机的时候,就明显不够用了. 没有办法,只好打算回去使用原来的StdLib库,前两年不就这么干的嘛,也没什么难的.可是回头找对应库的时候,发现悲剧了,没有这个序列的标准库. 这也难不倒我们老司机!我就从HAL库里面把必须的寄存器语句摘出来,把冗余的有效检验和冲突处

STM32 实现 4*4 矩阵键盘扫描(HAL库、标准库 都适用)

本文实现的代码是基于STM32HAL库的基础上的,不过标准库也可以用,只是调用的库函数不同,逻辑跟配置是一样的,按我这里的逻辑来配置即可. 1.键盘原理图: 2.STM32 cubemx 引脚配置图: 这里用外部晶振内部晶振都可以,时钟对这个没什么影响,不用开中断,所以其他的配置就不细说了,下面再说一下这8个GPIO的配置. 4个引脚配推挽输出,这4个配输出的引脚内部上下拉不用配置:另外4个配成输入,内部上拉. 3.生成代码后,开始编写逻辑: 编写之前我们先做一下头文件的定义,把一些要用到的宏定

USART与USB接收不定数据方法,标准库、HAL库都适用

很多时候,我们使用串口或USB接收数据时,往往不知道PC端会发多长的数据下来, 为了解决这个不定数据接收问题,在此各提供一个解决思路. 串口数据不定接收: 由于STM32单片机带IDLE中断,所以利用这个中断,可以接收不定长字节的数据, 由于STM32属于ARM单片机,所以这篇文章的方法也适合其他的ARM单片机. IDLE就是串口收到一帧数据后,发生的中断.什么是一帧数据呢?比如说给单片机一 次发来1个字节,或者一次发来8个字节,这些一次发来的数据,就称为一帧数据,也可以 叫做一包数据. 还有一

CSDN日报20170413 ——《天天写业务代码的那些年,我们是如何成长过来的》

[程序人生]天天写业务代码的那些年,我们是如何成长过来的 作者:Phodal 比起写业务代码更不幸的是,主要工作是修 Bug , bug , buG , bUg. [Java 编程]Springboot实战:我们的第一款开源软件 作者:纯洁的微笑 在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? [物联网]Android Things:外设I/O接口-I2C 作者:1024工场 内部集成电路(