雅特力公司的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_SRAMSCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#elseSCB->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 是不一样的,抽空处理一下,请大家期待下期!

从STM32F407到AT32F407(一)相关推荐

  1. 正点原子:STM32F103(战舰)、STM32F407(探索者)、STM32F103(MINI)原理图和PCB

    目录 1.STM32F103(战舰) 2.STM32F407(探索者) 3.STM32F103(MINI) 为各位嵌入式好朋友分享三个重磅资源,正点原子三件套,可直接打样使用~ 1.STM32F103 ...

  2. STM32F103 与 STM32F407引脚兼容问题

    ===========突袭网收集的解决方案如下=========== 解决方案1: STM32F103有的功能407都有,并且这些功能的引脚完全兼容,只是程序不同而已... 而STM32F407有的功 ...

  3. linux stm32 主从,STM32F407和STM32F051主从I2C通信方法

    STM32F407和STM32F051主从I2C通信方法 作者:华清远见讲师 M4作为主机: int main(void) { HAL_Init(); SystemClock_Config(); MX ...

  4. 基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程(转)...

    源:基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程 转载于:https://www.cnblogs.com/LittleTig ...

  5. STM32F407之搭建工程

    STM32F407之搭建工程 一,使用软件和工具: 1,MDK5 2,串口调试助手:XCOM V2.0 3,烧写程序软件:FlyMcu 4,ST-Link仿真器 二,使用MDK5软件要点 1,选中MC ...

  6. stm32f407 usb cdc设备无法启动问题

    最新要做一个项目,要求基于STM32F407实现USB CDC设备,首先想到的就是直接用STM32CUBEMX工具来生成,OK,话不多说,直接上过程: RCC配置: Sys配置 USB_OTG_FS配 ...

  7. SPIFFS文件系统移植–基于STM32F407

    http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616126&highlight=%E6%96%87 ...

  8. STM32F407的硬件I2C

    源:STM32F407的硬件I2C 我使用的是STM32的固件库. 硬件模块使用之前必须配置其参数,I2C的配置如下: void IIC_Config(void) {GPIO_InitTypeDef ...

  9. 8修改host_正点原子【STM32-F407探索者】第五十九章 USB 鼠标键盘(Host)实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 上一章我们向大家介绍了如何利用 STM32F4 的 US ...

最新文章

  1. 实验室蒋田仔研究员:脑网络组图谱近10年研究详解【附PPT】
  2. jQuery的Ajax初识
  3. 数据结构与算法之归并排序
  4. ASP.NET中实现Flash与.NET的紧密集成(转,没看,有空研究一下)
  5. c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题
  6. layui添加复选框_layui复选框使用介绍
  7. 解决URL出现%E2%80%8E(Zero-Width Space)
  8. 2020 安装 nacos
  9. python 股票量化盘后分析系统V0.47
  10. cygwin安装wget
  11. _ZN10tensorflow8internal21CheckOpMessageBuilder9NewStringEv
  12. 银河麒麟系统PDF转Word
  13. 以新发展理念引领新型智慧城市建设
  14. Java中的23种设计模式的介绍
  15. 速度测试(speed test)
  16. 汉诺塔 问题 VIII
  17. 聊一聊DDR3中的ODT(On-die termination)
  18. oracle10g利用归档恢复,Oracle10g数据库归档与非归档模式下的备份与恢复
  19. CentOS 7 源码编译安装 Nginx
  20. zxr10交换机配置手册vlan_中兴ZXR10配置说明.doc

热门文章

  1. FPGA : 学习交流的网站和社区
  2. 大型数据中心维保外包模式的选择
  3. 难处理的js单引号与双引号问题解决
  4. Oracle中sql中unload的用法,Oracle跟Informix中load、unload
  5. 视觉定位领域专栏(二)常用数据集介绍
  6. Nginx配置静态访问txt文件(微信校验文件)
  7. Java判断平衡二叉树
  8. Android项目实战(二十六):蓝牙连接硬件设备开发规范流程
  9. 《本地计算机DNS缓存文件》
  10. pyecharts去除小圆圈