KEIL查看寄存器调试技巧__及其ST-LINK 烧写报错"no target connected"解决方案

ST-LINK 烧写报错"no target connected"

STM32调试器配置异常导致的问题与解决方法(一)

原因:我把PA、PE相关的寄存器值写错了

**复制粘贴时没注意,写少了取反符号**
错误代码

    //MODE:输入
    GPIOA->MODER &= (0x3 << (2*0)); //清零
    GPIOE->MODER &= (0x3 << (2*2))|(0x3 << (2*3))|(0x3 << (2*4));

这样导致了其他位被置为0了,而需要更改的位却没有更改

这里刚好把 SWDIO 端口占用了,导致发现不了设备
image
错误代码导致的结果
image
image

SWDIO所需端口被修改了模式,导致用不了SW协议

正确代码

    //MODE:输入
    GPIOA->MODER &= ~(0x3 << (2*0)); //清零
    GPIOE->MODER &= ~(0x3 << (2*2))|(0x3 << (2*3))|(0x3 << (2*4));

这样才是把需要的位置0

解决方法:

改为“连接调试烧写器时就复位
image
然后烧写正常的代码试试,可以的话再把原来的代码改正后烧写。

改成这样的副作用:接上就直接复位了

Keil 查看片上外设寄存器技巧

正常编译烧写后,在 Debug 调试模式下
image
点击Debug菜单里的 Start/Stop Debug Session 即可开启 Debug 调试模式,然后点击 Peripherals菜单里的 System Viewer 系统视图即可选择某个外设的寄存器视图

image

效果图如下
GPIOA的MODER寄存器
image
GPIOA的IDR寄存器,这里能显示每一个关键位置的0和1
image
GPIOA的AF寄存器,这里非常简洁地看到 端口1到3 的值为 0x01,即开启复用 AF1
image

TIM2定时器的寄存器值,如CCR1的高低位,CCR2的高低位,
image

可见,这让我们能快速找出寄存器值的关键位是否正确,而不必查看整个寄存器的值并手动计算每个位的数值

开发环境优化

建议编辑项目代码和编译烧写用 VSCode 搭配C/C++ 插件和 keil assistant 插件
调试用 KEIL (如上面的 System Viewer)
image

注意:当然,添加新文件到Keil项目还是需要在Keil里面添加,然后再Keil编译一下保存。

内联函数

需要注意的地方有:
image

image

不同编译器的定义
image

也就是:用C99,debug模式不优化代码不内联


我的用法,一般是在寄存器操作的地方写,因为涉及寄存器操作的要快,并且我也不想要堆栈开销 ,在头文件里这么写:
// led_color.h
#ifndef LED_COLOR_H__
#define LED_COLOR_H__

#include "stm32f4xx.h"

//注意以下这个内联
__INLINE void led_color_change(u16 r, u16 g, u16 b) {
    TIM_TypeDef * TIMx=TIM2;
    TIMx->CCR2 = r;
    TIMx->CCR3 = g;
    TIMx->CCR4 = b;
}

#endif
// main.c
#include "stm32f4xx.h"
#include "led_color.h"

extern __INLINE void led_color_change(u16 r, u16 g, u16 b); //注意这行

int main(void) {
	while(1)
	{
		led_color_change(2,45,239);
	}
}

详见 C99/C11 的inline
https://zh.cppreference.com/w/c/language/inline

image

TIM的arr寄存器

这个寄存器不能一直写入,不然在裸机里程序实时度高,PWM接上LED灯后肉眼根本看不到灯光变化

STM32 手册说明

STM32 是 ST 公司出品的基于 ARM 内核的处理器。
ARM 内核是 ARM 公司的内核。
关系:ST 购买 ARM 授权,然后 ARM 公司授权给 ST 基于 ARM 内核定制自己的处理器的商业权力

架构图如下:
image

其中 ARM Cortex-M4 是 ARM 内核部分,其他部分都是 ST 公司的定制部分

  1. F4xx系列参考手册(适用于整个F4xx系列,ST公司出品)
    image

image

  1. F407 具体芯片手册(对F4xx系列手册的具体芯片补充说明,ST公司出品)
    image

image

  1. CM 内核权威手册(ARM 公司出品)
    书名:《The Definitive Guide to ARM® Cortex®-M3 and Cortex-M4 Processors》Third Edition
    作者:Joseph Yiu
    公司:ARM Ltd., Cambridge, UK

例如:NVIC中断属于ARM内核,所以应该在这里查阅,而非 ST 手册

image

--------蓝天上的云_转载请注明出处.
原文地址:https://www.cnblogs.com/yucloud/p/ST_LINK_no_target_connected.html