完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.整体特性
(1)F407带有FPU,可以进行浮点数硬件计算。 (2)两个DMA,每个有七个流控制器,支持外设和存储器之间的访问,也支持存储器到存储器之间的访问。具有FIFO功能。 (3)具有USB OTG 功能,可以做读卡器,亦可以读取U盘。 (4)具有以太网功能。 (5)两个SRAM(112,16KB),一个CCM RAM(内核耦合存储器)(只能CPU访问),总共192KB内存。 (6)具有FSMC功能(灵活地静态存储器访问) (7)Flash具有1Mb大小,但bank(块)太大了,使用不便。 总线架构如下: 注意:每次芯片复位后,所有外设时钟都会被关闭(除了SRAM和Flash),外设使用前必须设置。 注意:对 APB 寄存器执行16位或 8位访问时,该访问将转换为32 位访问:总线桥将16位或8 位数据复制后提供给 32 位向量。 1.1存储器组织架构 程序存储器、数据存储器、寄存器和IO端口在同一个顺序的4GB地址空间内。 各字节按小端模式编码。编号低字节在低位。 可寻址的存储空间分为8个主要块,每个块512MB。 1.2 内嵌SRAM 有4KB的备份SRAM,这是给RTC(实时时钟)用的。 SRAM访问支持字节、16位、32位(字)。 112KB和16KB映射在0x2000 0000上,供所有AHB主控总线访问,是通用SRAM。 64KB的CCM SRAM,只能有CPU通过数据总线访问,个人理解是不能用来DMA传输,正常代码中使用应该没有问题。映射在0x1000 0000。 1.3Flash和自举程序 系统自举模式下从该存储器启动,具有一次性编程OTP字节(512)。 代码起始区域位于0x0000 0000,这意味通常是Flash提供自举空间。从SRAM自举需要设置中断向量偏离表,这里不关注了。 这里有几种下载程序模式,通常使用USART1,USB转TTL下载。专用下载器更好。 可以看到,扇区都挺大的,如果删除,一次删除的东西很多,并不适合频繁读取。 2.电源 期间的工作电压在1.8v《VDD《3.6v,VBAT可给备份域供电。本文暂不考虑备份域。 AD转换可以接外部参考电压,且大小在1.8v到VDDA之间。 调压器(1.2v域)用于给内核、存储器、数字外设供电,具有三个级别,全功率、低功耗、待机模式,待机模式下SRAM和寄存器的内容将丢失。 电源具有监控功能,当电压低于指定阈值VPOR(上电复位)、VPDR(掉电复位)时,就会保持复位状态,从1.8V开始工作。 欠压复位要求电源电压达到指定VBOR阈值,这个默认关闭。 可编程电压检测器PVD,可配置外部中断,用于执行紧急关闭系统的任务。 默认情况,系统复位和上电复位后,系统都是进入运行模式。 3.时钟介绍 3.1系统复位的触发事件: (1)NRST引脚低电平(外部复位) (2)窗口看门狗计数结束(WWDG复位) (3)独立看门狗计数结束(IWDG复位) (4)软件复位(SW复位) (5)低功耗管理复位 软件复位和低功耗管理复位这里不考虑。 除了系统复位还有电源复位、备份率复位。 正常情况不考虑复位,因为这些会让问题变得复杂,除非已经把问题解决好了。 3.2系统时钟(SYSCLK)来源 可以看到,时钟非常复杂,这里只考虑额定最高频率168MHz的一种设置情况,超频或者低功耗使用的情况下,这里暂不考虑。 首先,大部分外设由系统时钟提供,指APB和AHB。 但是,USB、RNG、SDIO时钟,是由PLL48CLK提供,不大于48MHz。 12s的时钟,由PPL12SCLK提供,以实现高品质的音频性能。 外部时钟给USB和以太网MAC使用。 Cortex系统定时器(SysTick)(滴答计时器)可以使用8分频的AHB时钟(HCLK),也可以使用HCLK时钟。 定时器的时钟由硬件自动设置,当APB预分频器不为1时,等于APB时钟的2倍,若等于APB预分频器为1,则等于APB时钟频率。 本文中HCLK为168Mhz,APB肯定要分频的,所以定时器的时钟一般是两倍,APB最大42Mhz,所以定时器频率为84Mhz。 3.3HSE高速外部时钟和HSI高速内部时钟 两种配置方式: 第一种,非本文考虑范围。 一般使用第二种,要记住厂家焊好的晶振,或者自己焊接的晶振频率。 HSI内部信号由16Mhz的RC振荡器生成,准确度不够,系统复位后默认使用的是这个时钟源。 正常情况下,都是用的HSE时钟源,它的精度非常高。 3.4 PLL配置 这个是肯定要配置的,超频的秘诀就在其中,当然本文没有超频内容。 3.5LSE 低速外部时钟和LSI低速内部时钟 LSE大概率没有。。。。。。 LSI提供32678Hz的频率,RTC主要使用。 3.6时钟输出 最大速率不能超过100Mhz,也就是IO口的最大速率。 (1)MCO1可输出HSI、LSE、HSE、PLL时钟 (2)MCO2可输出HSE、PLL、SYSCLK、PLL12s时钟 本文用不到。 3.7 时钟测量 可以通过TIM5和TIM11的输入捕获功能测量时钟频率,有兴趣的可以试试。 3.8 寄存器配置(168Mhz) 这是关键部分了,RCC_CR 寄存器复位值不为0,第0/1/7位恒为1。 大概是复位后开启HSI时钟作为HCLK主时钟,并且自动校准。 所以我们要做的是把HCLK时钟切换到HSE倍频后的PLLCLK时钟。 由于Flash读取速度慢于CPU,当CPU工作频率较高时,需要设置等待周期以至于数据、指令顺利读到,不然会出错。图中明显可以看出需要设置5个周期(168Mhz下),不过不用太担心flash拖累了CPU的速度,stm32有ART自适应实时存储器加速器,可实现“0等待周期”的效果。 上面的代码有几个关键,一个是开启HSE时钟,再就调节PWR-CR寄存器的VOS位,调高电压级别,允许系统全功率运行,再就是通过PLL倍频HSE到合适的频率,设置合理分频频率到各个外设,设置好flash的等待周期。 上面的都成功后,在选取CPU时钟源到PLLCLK,然后等待成功即可。 正常情况,使用168MHz最大配置即可,超频或者低功耗需要先熟悉后再使用。后面也许有文章会考虑这方面需求。 4.中断设置 在这里,只给出最基本的中断设置代码。 STM32F407具有82个中断,内核支持256个,但通常都会限定数量。 具体中断看数据手册。 中断的设置要看M4内核手册,这里定性简单描述下。 SCB-》AIRCR寄存器是设置中断优先级分组的,中断有两段优先级,最高是抢占优先级,再就是抢占组里的子优先级。这里就是设置抢占优先级的,stm32最多只支持16位抢占优先级,也就是4位。 4位优先级分组可分五种情况,即0,1,2,3,4位抢占优先级,对应剩下位为响应优先级,即子优先级。 分组0-4即对应上述五种情况,抢占优先级》响应优先级。 然后优先级对应的数字越小,优先级也就越高。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1781 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1085 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1680 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
732浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
557浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 08:44 , Processed in 0.900357 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号