从STM32F407到AT32F407(一)

news2024/11/26 21:23:59

雅特力公司的MCU有着性能超群,价格优越的巨大优势,缺点是相关资料少一些,我们可以充分利用ST的现有资源来开发它。

我用雅特力的STM32F437开发板,使用原子 stm32f407的开发板自带程序,测试串口程序,原设定串口波特率为115200,但是输出乱码,波特率改成230400,串口输出正常。

            于是决心修改一下,时钟配置。主要参考《STM32f4xx中文参考手册.PDF》和RM_AT32F435-F437_CH_V2.03.pdf 。

主要问题出现在RCC PLL配置寄存器(RCC_PLLCFGR)

STM32F4XX的RCC PLL配置寄存器

 

 AT32F407RCC PLL配置寄存器

 

可以看到    PLL_P    只能是4/8/16/32

#define PLL_P      4 //定义为4

看到了他们的配置不同,下面开始修改代码

(1)修改SystemInit()函数。

void SystemInit(void)
{
  /* FPU settings ------------------------------------------------------------*/
  #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
    SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
  #endif
  /* Reset the RCC clock configuration to the default reset state ------------*/
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001;

  /* Reset CFGR register */
  RCC->CFGR = 0x00000000;

  /* Reset HSEON, CSSON and PLLON bits */
  RCC->CR &= (uint32_t)0xFEF6FFFF;

  /* Reset PLLCFGR register */
	//RCC->PLLCFGR = 0x24003010;
  RCC->PLLCFGR = 0x00033002;//AT32F437

  /* Reset HSEBYP bit */
  RCC->CR &= (uint32_t)0xFFFBFFFF;

  /* Disable all interrupts */
  RCC->CIR = 0x00000000;

#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
  SystemInit_ExtMemCtl(); 
#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
         
  /* Configure the System clock source, PLL Multiplier and Divider factors, 
     AHB/APBx prescalers and Flash settings ----------------------------------*/
  SetSysClock();

  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif
}

修改配置寄存器初始值,防止硬件错误。

2.修改SetSysClock()中的配置代码

//stm32f407  原代码 
/* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

   
//修改成如下代码
 /* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 2) +1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

3.修改  RCC_GetClocksFreq()和void SystemCoreClockUpdate(void)函数



将原代码:
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) +1 ) *2;
改成如下代码
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) -1 )* 4;

4. 修改延时函数,我目前的时钟是336MHZ

   delay_init(336);        //延时初始化 

经这样修改,串口输出和延时输出正常工作。

可以看到还有PLLQ 是不一样的,抽空处理一下,请大家期待下期!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/471473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】文件包含漏洞总结

目录&#xff1a; 介绍文件包含漏洞分类 LFIRFIPHP 的文件包含函数漏洞示例代码利用任意文件读取 使用 PHP 封装协议 php://filterphp://inputRFI getshellLFI文件上传 getshellLFI日志文件 getshellLFI/proc/self/environgetshellLFIphpinfo getshellLFIsession getshell绕过…

数据结构——队列的构建

在本次博客当中我们来学习一下队列的构建。首先来介绍一下队列。队列也是一种被限制的线性表。队列要求我们其中的元素只可以从队尾进入从队头出数据。也就是说我们先进入队列的数据就会先出队列。所以我们可以将我们的两种线性表改编成为我们的队列。话题又回到了我们两种线性…

算法记录 | Day44 动态规划

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

【初学人工智能原理】【3】梯度下降和反向传播:能改(上)

前言 本文教程均来自b站【小白也能听懂的人工智能原理】&#xff0c;感兴趣的可自行到b站观看。 本文【原文】章节来自课程的对白&#xff0c;由于缺少图片可能无法理解&#xff0c;故放到了最后&#xff0c;建议直接看代码&#xff08;代码放到了前面&#xff09;。 代码实…

itop-3568开发板驱动学习笔记(24)设备树(三)时钟实例分析

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 生产者属性#clock-cells 属性clock-output-namesclock-frequencyassigned-clockclock-indicesassigned-clock-parents 消费者属性 设备树中的时钟信息以时钟树形式体现&#xff0c;时钟树包括时钟的属性和结…

C#_语言简介

目录 1. C# 简介 2. Visual Studio 窗口界面显示 1. C# 简介 什么是程序&#xff1f; 程序&#xff08;Program&#xff09;简单来说就是&#xff1a; 计算机是无法听懂我们人类的语言的&#xff0c;也可以说我们通过我们日常交流的语言是无法控制计算机的&#xff0c;计算机…

排序算法 - 快速排序

文章目录 快速排序介绍快速排序实现快速排序时间复杂度和稳定性快速排序稳定性快速排序时间复杂度 代码实现核心&总结 每日一道算法&#xff0c;提高脑力。第二天&#xff0c;快速排序。 快速排序介绍 它的基本思想是: 选择一个基准数&#xff0c;通过一趟排序将要排序的…

Spring容器技术

Spring容器技术 1. Spring核心容器介绍1.1 创建容器1.2 获取bean对象1.3 容器类层次结构1.4 BeanFactory 2. Spring核心容器总结2.1 容器相关2.2 bean相关2.3 依赖注入相关 1. Spring核心容器介绍 问题导入 问题&#xff1a;按照Bean名称获取Bean有什么弊端&#xff0c;按照B…

(七)ArcCatalog应用基础——图层操作与数据输出

&#xff08;七&#xff09;ArcCatalog应用基础——图层操作与数据输出 目录 &#xff08;七&#xff09;ArcCatalog应用基础——图层操作与数据输出 1.地图与图层操作1.1创建图层1.2设置文件特征1.3保存独立的图层文件 2.地理数据输出2.1输出为Shapefile2.2输出为Coverage2.3属…

[Spring]初始导读

1.Spring初始 1. 为什么要学框架 学习框架相当于从"小作坊"到"工厂"的升级 , 小作坊什么都要做 , 工厂是组件式装配 , 特点就是高效. 2.框架的优点展示(SpringBoot Vs Servlet) 使用SpringBoot 项目演示框架相比 Servlet 所具备的以下优点: 无需配置 …

KDZD电缆安全双枪刺扎器

一、产品背景 多年以来&#xff0c;电力电缆的维护迁移过程中的识别与刺孔&#xff0c;均按照行业标准DL409-91《电业安全工作规程&#xff08;电力线路部分&#xff09;》第234条要求&#xff0c;采用人工刺孔&#xff0c;一旦电缆识别出错&#xff0c;误刺孔带电电缆将对人身…

Win11调整分区大小的方法有哪些?

电脑磁盘分区的大小关系着我们的系统运行流畅、文件数据分门别类、磁盘空间充分利用等&#xff0c;是一个非常重要的工作。那么Win11调整分区大小的方法有哪些&#xff1f; 使用命令提示符 缩小分区 步骤1. 在搜索框中输入cmd并以管理员身份运行命令提示符。 步骤2. 依次输入…

分布式事务TCC 你真的理解了吗

TCC&#xff08;补偿事务&#xff09; TCC 属于目前比较火的一种柔性事务解决方案。TCC 这个概念最早诞生于数据库专家帕特 赫兰德&#xff08;Pat Helland&#xff09;于 2007 发表的 《Life beyond Distributed Transactions: an Apostate’s Opinion》 这篇论文&#xff0…

本地 WAF 已死,云 WAF 永生

多年来&#xff0c;Web 应用程序防火墙 (WAF) 一直是应用程序保护的代名词。事实上&#xff0c;许多应用程序安全团队认为保护其应用程序的最佳选择是一流的本地 WAF 解决方案&#xff0c;尤其是当这些应用程序部署在本地或私有云中时。 但自从引入本地 WAF 以来&#xff0c;…

授权码 + PKCE 模式|OIDC OAuth2.0 认证协议最佳实践系列【03】

​ 在上一篇文章中&#xff0c;我们介绍了 OIDC 授权码模式&#xff08;点击下方链接查看&#xff09;&#xff0c;本次我们将重点围绕 授权码 PKCE 模式&#xff08;Authorization Code With PKCE&#xff09;进行介绍 &#xff0c;从而让你的系统快速具备接入用户认证的标准…

R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习

详情点击链接&#xff1a;R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习 Meta分析的选题与文献检索 Meta分析Meta分析的选题策略文献检索数据库精确检索策略&#xff0c;如何检索全、检索准文献的管理与清洗&#xff0c;如何制定文献纳入排除标准文献数据获取技…

( 哈希表) 128. 最长连续序列 ——【Leetcode每日一题】

❓128. 最长连续序列 难度&#xff1a;中等 给定一个未排序的整数数组 nums&#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O ( n ) O(n) O(n) 的算法解决此问题。 示例 1&#xff1a; 输入…

ai数字人无限播是什么?数字人直播带货如何搭建?操作教程及注意事项分享

随着数字技术的不断进步&#xff0c;直播行业也在不断的发展壮大。其中&#xff0c;数字人直播成为了最为热门的直播方式之一。数字人直播利用AI技术创建出的虚拟数字人进行直播&#xff0c;给观众带来了全新的视觉体验。而随着数字人直播的不断发展&#xff0c;数字人直播带货…

力扣(LeetCode)1172. 餐盘栈(C++)

优先队列 解题思路&#xff1a;根据题意模拟。用数组存储无限数量的栈。重在实现 p u s h push push 和 p o p pop pop 操作。 对于 p u s h push push 操作&#xff0c;需要知道当前从左往右第一个空栈的下标。分两类讨论&#xff1a; ①所有栈都是满的&#xff0c;那么我…

基于台风信息查询 API 设计台风预警系统的基本思路

引言 在过去的几十年中&#xff0c;由于全球气候变化等因素的影响&#xff0c;台风的强度和频率都有所增加&#xff0c;给人类社会带来了极大的威胁。在这种背景下&#xff0c;一个高效可靠的台风预警和监测系统显得尤为重要。这种系统可以通过获取、存储、处理和分析各种相关…