打印
[应用相关]

STM32的介绍及MDK

[复制链接]
楼主: qn7a12
手机看帖
扫描二维码
随时随地手机跟帖
101
qn7a12|  楼主 | 2023-4-30 14:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates
和STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Include

使用特权

评论回复
102
qn7a12|  楼主 | 2023-4-30 14:12 | 只看该作者
2.M4内核需要的文件
core_cm4.h文件是CMSIS核心文件,提供进入M4内核接口,这是ARM公司提供,对所有CM4内核的芯片都一样。你永远都不需要修改这个文件。

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Includ

使用特权

评论回复
103
qn7a12|  楼主 | 2023-4-30 17:04 | 只看该作者
3.外设驱动文件

misc.c和misc.h是定义中断优先级分组以及Systick定时器相关的函数。

stm32f3xx_rcc.c和stm32f4xx_rcc.h是与RCC相关的一些操作函数,作用主要是一些时钟的配置和使能。在任何一个STM32工程RCC相关的源文件和头文件是必须添加的。

使用特权

评论回复
104
qn7a12|  楼主 | 2023-4-30 17:05 | 只看该作者
对于文件stm32f4xx_ppp.c和stm32f4xx_ppp.h,这就是stm32F4标准外设固件库对应的源文件和头文件。包括一些常用外设GPIO,ADC,USART等

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\STM32F4xx_StdPeriph_Driver

使用特权

评论回复
105
qn7a12|  楼主 | 2023-4-30 17:05 | 只看该作者
4.启动文件
启动文件主要是进行堆栈之类的初始化,中断向量表以及中断函数定义。启动文件要引导进入main函数。Reset_Handler中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环。

使用特权

评论回复
106
qn7a12|  楼主 | 2023-4-30 17:05 | 只看该作者
startup_stm32f40_41xxx.s
Reset_handler在我们系统启动的时候会调用,下面让我们看看Reset_handler这段代码

使用特权

评论回复
107
qn7a12|  楼主 | 2023-4-30 17:05 | 只看该作者
; Reset handler 
Reset_Handler     PROC
                 EXPORT   Reset_Handler              [WEAK]
        IMPORT   SystemInit
        IMPORT   __main

                 LDR      R0, =SystemInit
                 BLX      R0
                 LDR      R0, =__main
                 BX       R0
                 ENDP

使用特权

评论回复
108
qn7a12|  楼主 | 2023-4-30 17:05 | 只看该作者
这段代码的作用是在系统复位之后引导进入main函数,同时在进入main函数之前,首先要调用SystemInit系统初始化函数。

\STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm

使用特权

评论回复
109
qn7a12|  楼主 | 2023-4-30 17:06 | 只看该作者
5.对于STM32F40系列的工程,还需要添加一个全局宏定义标识符
STM32F40_41xxx,USE_STDPERIPH_DRIVER
至关重要,一个符号都不要错,最后面是空的

使用特权

评论回复
110
qn7a12|  楼主 | 2023-4-30 17:06 | 只看该作者
程序下载电路

USB 转串口,CH340G,是国内芯片公司南京沁恒的产品,稳定性经测试还不错,所以还是多支持下国产。

使用特权

评论回复
111
qn7a12|  楼主 | 2023-4-30 17:06 | 只看该作者
首先,mcuisp 控制 DTR 输出低电平,则 DTR_N 输出高,
然后 RTS 置高,则 RTS_N 输出低,这样 Q4 导通了,BOOT0 被拉高,即实现设置 BOOT0 为 1
同时 Q3 也会导通,STM32F4 的复位脚被拉低,实现复位。
然后,延时 100ms 后,mcuisp 控制DTR为高电平,则DTR_N输出低电平,RTS维持高电平,则RTS_N继续为低电平
此时STM32F4的复位引脚,由于 Q3 不再导通,变为高电平,STM32F4 结束复位
但是 BOOT0 还是维持为1,从而进入 ISP 模式,接着 mcuisp 就可以开始连接 STM32F4,下载代码了,从而实现一键下载。

使用特权

评论回复
112
qn7a12|  楼主 | 2023-4-30 17:07 | 只看该作者
STM32调试
JLink
JTAG与SWD是个接口,JLink指的是仿真器
串口只能下载代码,并不能实时跟踪调试,而利用调试工具,比如 ST-LINK,JLINK 和ULINK 等就可以实时跟踪程序,从而找到你程序中的 bug,使你的开发事半功倍。

使用特权

评论回复
113
qn7a12|  楼主 | 2023-4-30 17:07 | 只看该作者
JTAG/SWD
调试原理

串行接口,就是SWD,通信数据线两根

使用特权

评论回复
114
qn7a12|  楼主 | 2023-4-30 17:07 | 只看该作者
JTAG,通信数据线五根,所以用SWD多

使用特权

评论回复
115
qn7a12|  楼主 | 2023-4-30 17:07 | 只看该作者
使用SWD的话,只需要SWDIO与SWCLK两个引脚。
使用JTAG的话,五个引脚都要用到。

使用特权

评论回复
116
qn7a12|  楼主 | 2023-4-30 17:08 | 只看该作者
SWD与JTAG的端口映射

使用特权

评论回复
117
qn7a12|  楼主 | 2023-4-30 17:08 | 只看该作者
默认的五个口不能作为IO口输出

使用特权

评论回复
118
qn7a12|  楼主 | 2023-4-30 17:08 | 只看该作者
认这五个引脚复位了之后都是用来仿真的,是不能正常使用的,只有禁止了相应的端口,才能释放IO引脚

使用特权

评论回复
119
qn7a12|  楼主 | 2023-4-30 17:09 | 只看该作者
JTAG/SWD硬件

STM32 的 SWD 接口与 JTAG 是共用的,只要接上 JTAG,你就可以使用 SWD模式了(其实并不需要 JTAG 这么多线),当然,你的调试器必须支持 SWD 模式,JLINK V7/V8、ULINK2 和 ST LINK 等都支持 SWD 调试。

使用特权

评论回复
120
qn7a12|  楼主 | 2023-4-30 17:09 | 只看该作者
设置禁止JTAG
(在文件stm32f10x_gpio.c中):调用该函数,有三个选项。407没有复用概念。
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则