硬汉嵌入式论坛

 找回密码
 立即注册
查看: 13496|回复: 3
收起左侧

[客户分享] STM32F4xx 学习、开发笔记

[复制链接]

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-11-4 09:08:33 | 显示全部楼层 |阅读模式
接了一个STM32F4数据采集的项目。记录下软件调试中遇到的问题。

STM32F4XX 的固件库和 STMF32F10X 的固件库函数区别还是比较大的。
1、配置 GPIO 的结构体以及管脚复用的配置方式完全不同,请参考 STM32F4XX 固件库的例子。这个差异导致我们写的 bsp 系列函数几乎都需要做相应的调整。
2、打开 GPIO 时钟的函数更名了
3、固件库设置的外部晶振缺省是 25M。为了避免不必要的麻烦,将客户板子上的8M晶振换为了25M。当然用8M也是可以的,只需要修改相关的PLL配置。[blockquote]
#if !defined  (HSE_VALUE)
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
[/blockquote]
4、配置PLL的函数缺省就是按25M配置的。
      系统时钟 =  ((25 / 25) * 336)  / 2 = 168MHz

      USB FS、SDIO、RNG 时钟 =  48MHz[blockquote]

/************************* PLL Parameters *************************************/
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      25
#define PLL_N      336
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2
/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      7[/blockquote]
5、移植SDIO+FatFS 时,需要注意几点:

     (1) 改写 disk_read 和 disk_write 函数时,读写SD block 之后,需要等待DMA传输结束
     (2) 中断文件中添加2个中断: (第2个 SD_SDIO_DMA_IRQHANDLER 名称需要更换为 DMA2_Stream3_IRQHandler   (因为固件库的例子支持2种DMA配置方式,缺省是这种)[blockquote]


void SDIO_IRQHandler(void)
{
  /* Process All SDIO Interrupt Sources */
  SD_ProcessIRQSrc();
}
void SD_SDIO_DMA_IRQHANDLER(void)
{
/* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
  SD_ProcessDMAIRQ();
}[/blockquote]
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
 楼主| 发表于 2012-11-4 19:26:43 | 显示全部楼层
system_stm32f4xx.c 文件中 void SetSysClock(void) 函数对时钟的配置如下:
        
        HCLK = SYSCLK / 1     (AHB1Periph)     = 168MHz
        PCLK2 = HCLK / 2      (APB2Periph)      = 84MHz
        PCLK1 = HCLK / 4      (APB1Periph)      = 42MHz
   
        因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = PCLK1 x 2 = SystemCoreClock / 2;
        因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = PCLK2 x 2 = SystemCoreClock;

        APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM6, TIM12, TIM13,TIM14
        APB2 定时器有 TIM1, TIM8 ,TIM9, TIM10, TIM11


实际测试,APB1 上的 TIM输出PWM信号最大频率 = 42MHz
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
 楼主| 发表于 2012-11-15 08:41:21 | 显示全部楼层
F4固件中的SDIO例子支持DMA模式和轮询模式

/* Uncomment the following line to select the SDIO Data transfer mode */
#if !defined (SD_DMA_MODE) && !defined (SD_POLLING_MODE)
#define SD_DMA_MODE                                ((uint32_t)0x00000000)
//#define SD_POLLING_MODE                            ((uint32_t)0x00000002)
#endif


缺省是DMA模式,可以正常工作。 但是切换到POLLING模式时,写卡不正常,读卡正常,原因未知。

另外,SDIO-4bit方式 写SD卡速度很低,只有 22KB/s 左右,原因待查。
回复

使用道具 举报

2

主题

3

回帖

2

积分

新手上路

深圳市侨峰科技 DAVICOM中国大陆

积分
2
QQ
发表于 2012-11-29 14:12:34 | 显示全部楼层
STM32配套网络接口IC

深圳市侨峰科技有限公司 (DAVICOM中国区总代理)
嵌入式以太网络接口芯片供应商,软件及硬件设计服务与咨询
联络方式:Jonny.chu@qftek.com  电话:13554902206
DM9000A  DM9000C  DM9161A  DM9161C DM8203 DM9620 DM9162N
DAVICOM中国总代理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-20 10:38 , Processed in 0.157172 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表