详解STM32F10x在.Net Micro Framework的Processor Properties的取值

//=====================================================================
//TITLE:
//    详解STM32F10x在.Net Micro Framework的Processor Properties的取值
//AUTHOR:
//    norains
//DATE:
//    Moday  20-September-2010
//Environment:
//    .Net Micro Framework Porting Kit
//=====================================================================

    当我们需要为特定的开发板定制相应的.Net Micro Framework框架时,首先要做的自然是运行tools/bin/SolutionWizard/SolutionWizard.exe工具进行设置。大部分设置都不难,只要根据相应的需求进行选择即可,但其中却偏偏有一道难关,却可能让很多朋友为难,那就是Processor Properties的设置。虽然叶帆在他的文章《【.Net Micro Framework PortingKit - 02】STM3210E平台构建》(http://blog.csdn.net/yefanqiu/archive/2010/01/02/5119171.aspx)中以截图的方式列出了他在红牛开发板上的设置,但对这些数值的来源却略而不提,估计这让很多喜欢专研的朋友心痒痒。所以,本文就权当对叶帆文章的补充,来看看这些数值究竟从何而来。

 

    不过,我这里的Processor Properties设置和叶帆的稍有不同,如下所示:
 

    不过,这细微的不同并不影响后期的开发,为什么呢?请听我一一道来。

 

 1. Debugger Port -- USART
 
    这点没有什么可以说的,因为嵌入式的调试端口大部分使用的都是最简单的串口,所以直接选择USART。

 

 

2.Memory Profile – Small

 

    这个好像和.net Micro Framework有关,但具体取值对应于什么样的状况,我也不太清楚。既然叶帆选择了small,那么这里也不求甚解一回,就选small好了。

 

 

3. RAM Memory Base -- 0x20000000

 

   《STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs》中关于Embedded SRAM有这么一段说明,如图:

 

    从图中可以看出,RAM Memory Base的取值为0x2000 0000。

 


4.RAM Memory Size -- 0x00010000

 

    这个需要看ST给过来的《STM32选型指南》文档,里面关于144脚的STM32F103的功能简介如下所示:


 
    从图中可以看出,其RAM大小为64K,换算成BYTE单位的话,则是 64 * 1024 = 65536,如果以十六进制表示,则是0x10000。故RAM Memory Size为0x00010000。

 

 

5.Flash Memory Base -- 0x08000000

 

    这个的取值就和叶帆文章中所列的有所不同。可能大家会觉得有点迷糊,为什么叶帆在它的文章中使用0x0000 0000也能够正常呢?因为《STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs》中指出,无论Main Flash的大小是多少,都是以0x0800 0000为起始地址的,例如:


 

 

    叶帆取值为0x0000 0000的奥秘就在于Cortex M3的内存印射。我们可以先看看Boot configuration这节,里面有三种启动模式,分别是Main Flash Memory,System Memory和Enbedded,如图所示:


 

    而关于Main Flash Memory又有如下说明:


 

 

    这段英文的大意是,如果选择的启动模式是Main Flash Memory,那么Main Flash Memory会印射到0x0000 0000地址。换句话来说,访问Main Flash的话,即可使用0x0000 0000,也可使用0x0800 0000。

 

 

6.Flash Memory Size -- 0x00080000

 

    这个还得看《STM32选型指南》的CPU功能列表,如图所示:


 

    从图中可以知道STM32F103ZE的Flash大小为512K,换算为字节则是:512 x 1024 = 524288,对应的十六进制则为:0x80000。

 

 

7.System Clock(HZ) – 8000000

 

    要得知这个系统时间的数值确实有点麻烦,不过,还是一步一步来吧。在《STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs》有这么一段话,如图:


 
    意思是,HIS,HSE,PLL都可以作为System Clock。

 

    而关于HIS又有如下说明,如图:


 

    这段文字标明,HIS可以由内部8MHZ的晶振来产生,而红牛开发板恰好又是用的HIS作为System Clock,所以这里的数值为8000000

 


8.Slow Clock(HZ) --32768

 

    这个是CPU为了节电而低速运行的频率,这个在STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs》也能找到其相应的蛛丝马迹,如图:

 
    文档中很明确地指出,频率为32.768kHZ,故这里以HZ为单位,数值则为32768。


    如果大家对System Clock和Slow Clock的取值还有疑虑的话,可以打开MDK的Target Option…,在Device中选择STM32F103ZE,在右边的介绍中可以看到内部频率的取值为8MHZ和32KHZ,正好和我们的取值相符,如图:


 

    至此,所有数值来源已经说明完毕,不知道各位朋友是否明白了呢?

posted @ 2010-09-20 13:33  我的一天  阅读(204)  评论(0编辑  收藏  举报