IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F0禁用SWD功能 -> 正文阅读

[嵌入式]STM32F0禁用SWD功能

STM32F0禁用SWD功能

本篇旨在记录在调试过程中遇到的一些其他操作无法达到预期操作的经验,有错还请指正。
在不考虑硬件电路的情况下软件禁用Debug调试接口,所选用MCU为STM32F091,使用调试模式为SWD,烧写器为J-Link。

一、不关心Reset引脚的情况下

在不关心Reset引脚的情况下,即4线刷写(3.3V,GND,SWCLK,SWDIO)情况下,简单的把PA13和PA14配置为普通IO即可。可以通过STM32Cube进行初始化代码,或者使用HAL库自行配置。例如:以下将PA13和PA14配置为推挽输出模式,或者修改备用功能为其他的模式,PA13和PA14从Reference Manual上看应该只有AF0是有效的,其他均为Reserve,因此配置为AF1可以将其无效化。
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
		/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_13|GPIO_PIN_14, GPIO_PIN_RESET);
/*Configure GPIO pins : PA13 PA14 */
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14;
#if 1
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
#else
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Alternate = GPIO_AF7_COMP1;
#endif
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

以上操作可以无效化SWCLK和SWDIO引脚,在不接入Reset引脚的情况下使用刷写器会显示连接失败,但如果接入Reset仍然可以正常刷写,从Reference Manual上可以看到在MCU复位后PortA-Moder寄存器会默认配置为0x2800,即在复位后PortA寄存器默认配置PA13和PA14为AF模式,AF寄存器复位后默认为0,即AF0,结合在一起,PA13和PA14在复位后默认为SWCLK和SWDIO功能,具体AF映射表可以从对应MCU,DataSheet查看。在这里插入图片描述 在这里插入图片描述在这里插入图片描述

二、即使接入Reset引脚也要拒绝刷写

以上操作是针对SWDIO和SWCLK做的一些操作,无法在复位时保存,即达不到接入Reset引脚也要拒绝SWD功能。此时就需要使Memory protection来对Flash进行保护,使刷写无效。
关于保护等级描述如下:分为Level0,1,2在这里插入图片描述

Level 0:默认为Level 0,此时内部和外部的刷写,对Flash的操作都是允许的。
在这里插入图片描述
Level 1:在该状态下无法通过外部对Flash进行读取。此时基本上已经达到要求了,如果使用Keil进行仿真则会报错,无法连接。但是如果此时接入J-Flash进行连接会显示警告对话框,表示监测到Flash读保护,如果继续连接会擦除Flash。如果点了是则Flash内容全被擦除。需要注意的是即使软件上将等级1降低为等级0,Flash中内容依然会被擦除。
在这里插入图片描述
Level 2:No Debug。注意Level 2无法回退为Level 1或者Level 0,类似熔断。
在这里插入图片描述
部分调整RDP代码如下:

		static FLASH_OBProgramInitTypeDef OptionsBytesStruct;
		HAL_FLASH_Unlock();
		HAL_FLASH_OB_Unlock();
		HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct);
		if(OptionsBytesStruct.RDPLevel == OB_RDP_LEVEL_0)
		{
			OptionsBytesStruct.OptionType = OPTIONBYTE_RDP;
			OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_1;           //or OB_RDP_LEVEL_2 
			if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct)  == HAL_OK)
			{
			HAL_FLASH_OB_Launch();
			}                             
		}
		HAL_FLASH_OB_Lock();
		HAL_FLASH_Lock();

下次重启生效。
以上,有错误请指出。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:20:30  更:2021-09-18 10:22:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:30:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码