从STM32F407到AT32F407(一)

这篇具有很好参考价值的文章主要介绍了从STM32F407到AT32F407(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

STM32F4XX的RCC PLL配置寄存器

从STM32F407到AT32F407(一)

 从STM32F407到AT32F407(一)

 AT32F407RCC PLL配置寄存器从STM32F407到AT32F407(一)

 

可以看到    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 是不一样的,抽空处理一下,请大家期待下期!文章来源地址https://www.toymoban.com/news/detail-432037.html

到了这里,关于从STM32F407到AT32F407(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 初识 STM32和STM32F407简介

    2007 年 6 月,ST 在北京发布了全球第一款基于 ARM Cortex M3 内核的 32 位通用微控制 器芯片:STM32F103,以优异的性能,丰富的资源,超高的性价比,迅速占领市场,从此一鸣 惊人,一发不可收拾,截止到 2020 年 6 月,STM32 累计出货量超过 45 亿颗。 战舰开发板使用的 STM32F103ZET6

    2023年04月08日
    浏览(74)
  • STM32F407 移植 FreeRTOS

    本实验是基于正点原子 STM32F407ZG 探索者开发板完成的,所以需要一个STM32F407ZG 探索者开发板 用于移植的基础工程(下面会讲) FreeRTOS源码(下面会讲) 本实验所有用到的代码:基于正点原子STM32F407的FreeRTOS移植工程.zip 1.1 移植前准备 1.1.1 基础工程 由于后续需要用到 LED、

    2024年02月08日
    浏览(70)
  • STM32F407的PWM

    泉水 STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。 高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。 通用定时器也能同时产生多达 4路的 PWM 输出 STM32F407 最多可以同时产生 30 路 PWM 输出! 这里我们仅利用 TIM14的 CH1 产生一路 PWM 输出。 如上所

    2024年02月17日
    浏览(46)
  • STM32F407 --USART使用

    目录 1. 串口配置--普通模式 2. 实现数据的传输主函数 1)单引号双引号的应用数组传输 2)将调试信息用串口打印传送到电脑上 1. 串口配置--普通模式 F407使用的M4内核与F103使用的M3内核不一样,导致在使用配置上有区别。需要在F103配置的基础上专门将GPIO的PIN配置成复用功能

    2024年02月16日
    浏览(58)
  • STM32F407添加DSP库

    编译程序出现以下报错 出现 “error: #5: cannot open source input file “arm_const_structs.h”: No such file or directory” 错误的原因是编译器无法找到名为 “arm_const_structs.h” 的头文件。 头文件路径错误 头文件未安装或丢失 编译器配置问题 添加DSP库 添加DSP库可以参考这篇博客: STM32CubeMX关

    2024年02月05日
    浏览(64)
  • 基于STM32F407的智能门锁

            在消费升级渗透在各个领域的今天,国民消费发生着巨大的变化,与每个人息息相关的家居行业也是如此。现今,越来越多的智能家居产品出现在普通老百姓的生活中,智能照明、智能窗帘、智能扫地机器人等各种智能产品都给人们的生活带来了极大的便利。智能

    2024年02月11日
    浏览(66)
  • STM32F407 滴答定时器

    介绍STM32F407滴答定时器配置方法、使用方式,封装延时函数得到精确的时间。 STM32F407参考手册中第10章介绍了滴答定时器的校准值。 M4权威指南介绍滴答定时器的章节,M3权威指南中与M4权威指南中的介绍一样。 在sys.c文件中增加滴答定时器的代码 在delay.c文件增加以下代码

    2024年02月11日
    浏览(54)
  • STM32F407移植OpenHarmony笔记1

    参考文档: OpenAtom OpenHarmony width=device-width,initial-scale=1.0 https://docs.openharmony.cn/pages/v3.2/zh-cn/device-dev/get-code/gettools-acquire.md/ 搭建环境 安装linux系统: Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-91-generic x86_64) 下载源代码:我选择的是V3.2.4版本 https://repo.huaweicloud.com/openharmony/os/3.2.4/code-v3.2.4-Rele

    2024年01月25日
    浏览(56)
  • STM32F407 电机编码器测量

    STM32的定时器功能非常强大,根据官方手册,定时器的功能如下 高级定时器 TIM1 和 TIM8 主要特性 TIM1 和 TIM8 定时器具有以下特性: ● 16 位递增、递减、递增/递减自动重载计数器。 ● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于

    2023年04月08日
    浏览(51)
  • STM32F407串口IAP远程升级程序

    相关代码和工程文件链接:https://pan.baidu.com/s/1wN4THWJwqzjjIe7e2TENBA?pwd=o86o 提取码:o86o         STM32代码烧录主要有三种:ICP、ISP、IAP。         ICP(In Circuit Programing),在电路编程,通过JTAG或者SWD接口进行程序的烧录,就是平时利用ST-Link或者J-Link烧录程序;       

    2024年02月10日
    浏览(117)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包