打印
[其他ST产品]

stm32中DMA,时钟树、内存总线、配置时钟时先配置flash->acr、通过寄存器点亮led

[复制链接]
1149|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AC, DM, DMA, LED, ST
DMA


1、画图Cortex-M3内部结构图,要体现相应的总线,并标注其作用。


使用特权

评论回复
沙发
wang6623|  楼主 | 2023-9-25 17:39 | 只看该作者
Icode:程序存在Flash中,通过ICode(Instruction Code)总线与Cortex连接取指令。

使用特权

评论回复
板凳
wang6623|  楼主 | 2023-9-25 17:39 | 只看该作者
Dcode:数据被存放在外设内部Flash(SRAM)中,通过DCode(Data Code)访问。

使用特权

评论回复
地板
wang6623|  楼主 | 2023-9-25 17:39 | 只看该作者
Systembus: 访问外设的寄存器,通常说的寄存器编程就是用这条总线的。

使用特权

评论回复
5
wang6623|  楼主 | 2023-9-25 17:44 | 只看该作者
DMA: 数据变量拷贝时可以不占用CPU,通过DMA(Direct Memory Access)总线和DMA1、DMA2完成。

使用特权

评论回复
6
wang6623|  楼主 | 2023-9-25 17:45 | 只看该作者

使用特权

评论回复
7
wang6623|  楼主 | 2023-9-25 17:45 | 只看该作者

使用特权

评论回复
8
wang6623|  楼主 | 2023-9-25 17:45 | 只看该作者

使用特权

评论回复
9
wang6623|  楼主 | 2023-9-25 17:45 | 只看该作者

使用特权

评论回复
10
wang6623|  楼主 | 2023-9-25 17:46 | 只看该作者
2、关于RCC时钟,完成如下任务
(1)画出RCC时钟树简图,要体现出相关的时钟源

使用特权

评论回复
11
wang6623|  楼主 | 2023-9-25 17:46 | 只看该作者

使用特权

评论回复
12
wang6623|  楼主 | 2023-9-25 17:46 | 只看该作者

使用特权

评论回复
13
wang6623|  楼主 | 2023-9-25 17:46 | 只看该作者

使用特权

评论回复
14
wang6623|  楼主 | 2023-9-25 17:46 | 只看该作者
上面这张的图的意思是:Cortex‐M3和core是不一样的,core就是cpu,Cortex‐M3还包含了NVIC(里面有所systick)等调试组件
而上面的时钟树图是在stm32芯片角度上的,可以看到HCLK 到了core,FCLK到了Cortex‐M(也就是里面的systick)而且还有一个HCLK /8的也到了Cortex‐M(这个指向明确加了个system timer)

使用特权

评论回复
15
wang6623|  楼主 | 2023-9-25 17:48 | 只看该作者
1.SYSCLK:系统时钟,是STM32大部分器件的时钟来源,主要由AHB预分频器分配到各个部件。

2.HCLK:由AHB预分频器直接输出得到,它是高速总线AHB的时钟信号,提供给存储器,DMA及Cortex内核,是Cortex内核运行的时钟,CPU主频就是这个信号。
3.FCLK:由CM3core内核内部时钟源产生,是内核的“自由运行时钟”。“自由”表现在它不来自时钟HCLK,但值与HCLK相同。因此在HCLK停止时FCLK也可以继续运行。也就是说,即使CPU休眠了,也能够采样到外部中断和跟踪休眠事件。低功耗模式下使用。
【ARMJISHU注:FCLK 为处理器的自由振荡的处理器时钟,用来采样中断和为调试模块计时。在处理器休眠时,通过FCLK 保证可以采样到中断和跟踪休眠事件。 Cortex-M3内核的“自由运行时钟(free running clock)”FCLK。“自由”表现在它不来自系统时钟HCLK,因此在系统时钟停止时FCLK 也继续运行。FCLK和HCLK 互相同步。FCLK 是一个自由振荡的HCLK。FCLK 和HCLK 应该互相平衡,保证进入Cortex-M3 时的延迟相同。】

使用特权

评论回复
16
wang6623|  楼主 | 2023-9-25 18:06 | 只看该作者
4.PCLK1:外设时钟,由APB1分频得到,最大可为72Mhz,提供给APB1总线上的外设使用。

5.PCLK2:外设时钟,由APB2预分频输出得到,最大为72Mhz,提供给APB2总线上的外设。

使用特权

评论回复
17
wang6623|  楼主 | 2023-9-25 18:07 | 只看该作者
Systick 介绍
Systick定时器,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM32+UCOS系统中,都采用Systick做UCOS心跳时钟。

使用特权

评论回复
18
wang6623|  楼主 | 2023-9-25 18:07 | 只看该作者
Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

使用特权

评论回复
19
wang6623|  楼主 | 2023-9-25 18:08 | 只看该作者
SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。Systick中断的优先级也可以设置。

实际上,Systick就是一个定时器而已,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断,称之为滴答中断操作系统进行运转的时候,也会有时间节拍。它会根据节拍来工作,把整个时间段分成很多小小的时间片,而每个任务每次只能运行一个时间片的时间长度,超时就退出给别的任务运行,这样可以确保任何一个任务都不会霸占操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统的节拍。只要不把它在SysTick控制及状态寄存器中的使能位清除,就一直执行。

使用特权

评论回复
20
wang6623|  楼主 | 2023-9-25 18:08 | 只看该作者
SysTick相关寄存器
SysTick有四个寄存器,分别为CTRL(控制与状态寄存器)、LOAD(自动重装载值寄存器)、VAL(当前值寄存器)、CALIB(校准值寄存器)。

使用特权

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

本版积分规则

55

主题

390

帖子

0

粉丝