STM32F407zET6芯片总结

STM32 以前没有接触过,今年第一次接触,在搭建环境配置的时候就给了我很多下马威:

1:总是出现:C:\Keil_STM32\ARM\INC\ST\STM32F10x\stm32f10x.h(80):error:  #35:#error directive: "Please selectfirst the target STM32F10x device used inyour application (instm32f10x.h file)错误,

原来是右键点击工程名,选择第一个options for target ,下面选择C/C++,在define文本框中输入:

STM32F40_41xxx,USE_STDPERIPH_DRIVER即可。STM32F40_41xxx必须可以在system_stm32f4xx.c文件中存在。

2:出现Undefined symbolNVIC_PriorityGroupConfig NVIC_Init SysTick

原来是缺少misc.c文件

3:原来下载了keil5forarm还得下载相关的固件库文件

4:ST_Link只需4条线就可以debug分别是3.3V,GND,SWIO,SWCLK

5:选择仿真器仿真需要在两个地方分别选择:debug下的ST_Linker和Utilities下Use Target Driver for Flash Programming 的ST-Link Debugger

6:需要把debug下硬件仿真那一边的所有复选框都选上,才能问题少,我少选了run to main 就每次从startup文件开始

7:一定要把debug下的4个dll和4个parameter都填上对应的值


尤其是最下面一行,填上对应的芯片号,不要用默认的那个文件库和参数

8:C\C++下面的one ELF section per function要勾选,includepath要选择需要的头文件.h文件夹


9:target下面的Use MICROLIB一定要勾选,如果你想用printf函数输出到串口,必须勾选而且还要添加其他的函数

   int fputc(int ch, FILE *f)
   {
      USART_SendData(USART3, (unsigned char) ch);// USART1 可以换成 USART2 等
      while (!(USART3->SR & USART_FLAG_TXE));
      return (ch);

   }

函数用来发送printf内容,不然不会有显示的

9:一定要看准了芯片外部晶振频率,单片机上网口的晶振和芯片外部晶振距离不远,我把芯片晶振频率就给看成网口晶振频率25M,结果怎么调试都出现乱码,发送03 串口调试工具出现FCE0E0,郁闷死了,调了两个礼拜都不起色。看到网友说他把25M换成8M出问题我还不在乎,后来从新看电路图才发现芯片外部晶振是8M。死啦死啦。可是固件库里默认的的是25M,我就是看到25M晶振,心想不会错啊,哎哎。。。。。。。。,还有修改晶振频率后还有修改PLL_M的值因为该芯片最高晶振168Hz,如果HSE_VALUE从25改到8M,默认的168M会大打折扣,所以PLL_M 改成8,其他不动。修改的文件包括stm32f4xx.h中把25M改成HSE_VALUE8M,在system_stm32f4xx.c中的#define HSE_BYPASS_INPUT_FREQUENCY   8000000修改,#define PLL_M      8修改;系统时钟计算方式HSE_clk=(HSE/PLL_M)*PLL_N

10:如果使用串口,第一步需要找到对应的串口引脚,使能串口时钟和对应挂载串口总线时钟

第二步设置引脚复用,以及引脚输出输入模式,并初始化引脚

第三步设置串口参数,初始化串口

第四步设置中断信号,中断优先级,写中断函数

我参考的是正点原子http://www.openedv.com/posts/list/43333.htm的串口设置和PWM设置

正点原子的PWM程序没有输出,后来在PWMinit函数里添加了一句TIM_OCInitStructure.TIM_Pulse=pulse;

就能用了,因为才仿真时候发现这个CCR1的寄存器值乱跳。。。。


OK经验就总结到此为止

  • 5
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407ZET6是一款32位ARM Cortex-M4内核的高性能主控芯片,广泛用于嵌入式系统设计中。在进行STM32F407ZET6主控芯片电路设计时,需要考虑以下几个方面: 1. 电源管理:主控芯片需要提供稳定可靠的电源供电,可以采用电源管理芯片进行电压稳定与滤波。同时,需要根据系统要求设计电池或外部电源模块。 2. 时钟系统:主控芯片需要外接晶振或时钟模块,确保系统具备准确的时钟源。可以使用外部晶振或者使用内部时钟源,具体取决于应用和系统要求。 3. 外围接口:主控芯片具备丰富的外围接口,包括GPIO、UART、SPI、I2C等。设计时需要根据实际需求,合理规划这些接口的数量与功能配置,以满足系统的输入输出需求。 4. 存储器:主控芯片内部包含闪存和RAM,在电路设计中可以考虑扩展外部存储器,如SD卡或者SPI Flash,以满足系统的存储需求。 5. 重置与编程:设计需要考虑主控芯片的复位电路,确保系统能够正常重启和编程。一般包括复位按钮、复位电路和编程接口。 6. 电源管理与保护:为了确保芯片以及外部电路的安全稳定工作,需要设计合适的过流保护、过压保护、过温保护等电路。 7. 信号线布局:在电路设计中,需要注意信号线的布局与排线,避免信号干扰与串扰,提高电路的抗干扰能力。 总之,STM32F407ZET6主控芯片电路设计需要考虑电源管理、时钟系统、外围接口、存储器、重置与编程、电源管理与保护以及信号线布局等方面的设计与布置,以确保系统能够稳定可靠地运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值