EDN首页   博客首页

3

关于投票
我也来凑个热闹,在网上找到了些STM32中文资料,放上来跟大家分享:)

STM32的本地化做得比较慢啊,ST中文网站上还没有提供相应中文文档,不过网上已经能找到些翻译好的文档了,昨天晚上花了好长时间找啊,呵呵,拿上来跟大家一起分享!
STM32F101xx基本型系列数据手册
点击此处打开ourdev_181003.pdf(文件大小:404K)

STM32F103增强型系列数据手册
点击此处打开ourdev_181004.pdf(文件大小:458K)


STM32F10xxx技术参考手册
点击此处打开ourdev_181006.pdf(文件大小:4.21M)


STM32F10xxx USB开发工具包应用笔记

点击此处打开ourdev_181005.pdf(文件大小:979K)

STM32F10xxx硬件开发使用入门
点击此处打开ourdev_181007.pdf(文件大小:492K)


UM0427 ARM-based 32-bit MCU STM32F101xx and STM32F103xx firmware library固件库的说明文档,可惜是英文的,这个很重要,希望能早日看到中文版的
点击此处打开ourdev_181009.pdf(文件大小:3.38M)

固件库
点击此处下载ourdev_181008.zip(文件大小:972K)
    现在的程序库看着很舒服,大量采用结构指针,封装了相关寄存器,简单明了,有点C++的味道,并且效率非常高。还有就是里面的函数库很全也比较完善了,功能封装的很好,基本上只要看看函数就会用了,比以前AT91的库函数好了很多。还有CORTEXM3里面增加了位操作功能,可以直接对一个位进行操作,也比较方便的

 

感谢网友  alien2006

系统分类: 单片机
用户分类: 无分类
标签: 无标签
来源: 转贴
发表评论 阅读全文(500) | 回复(2)

9

关于投票
STM32 学习笔记----翻译部分

4、复位和时钟控制
4.1、复位
STM32 有三种复位类型:系统复位、电源复位和备份域复位。
4.1.1 系统复位
系统复位时,除了时钟控制CSR 寄存器里的那些复位标志和在备份域的寄存器没有复位,
其它的寄存器都将复位。(see Figure 3)
当以下条件任何一个发生时,将产生一个系统复位:
1、 在NRST 脚上出现低电平。(External Reset)
2、 窗口看门狗计时到。 (WWDG Reset)
3、 独立看门狗计时到。 (IWDG Reset)//这两个看门狗的名称如译得不对,望见谅
4、 软件复位。 (SW Reset) (see Section : Software Reset)
5、 低电压管理复位。(see Section : Low-power management Reset)
通过检查控制/状态寄存器RCC_CSR里的复位标志可以识别复位源。(see Section 4.3.10:
Control/status register (RCC_CSR))。
软件复位
如要强行软件复位芯片,必须将在Cortex-M3应用中断和复位控制寄存器里的
SYSRESETREQ位置1。如需了解更多的细节,请参考Cortex-M3技术参考手册。
低电压管理复位
有两种方式产生低电压复位:
1、 当进入STANDBY模式时,产生复位。
通过复位用户选项字节里的_nRST_STDBY位来使能这种复位,在这种情况下,只要进
入STANDBY模式被成功的执行,进入STANDBY模式被器件复位所取代。
2、 当时入STOP模式时,产生复位。
通过复位用户选项字节里的_Nrst_STOP位来使能这种复位,在这种情况下,只要进入
STOP模式被成功的执行,进入STOP模式被器件复位所取代。
为了得到更多的用户选项字节里信息,请参考STM32F10X FLASH编程手册。

点击下载

 

5、普通用途和可选择功能的I/O(GPIO 和
AFIO)
5.1、GPIO 功能描述
每个普通用途I/O 口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH)两个32 位数据
寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16
位复位寄存器(GPIOx_BRR)和一个32 位锁存寄存器(GPIOx_LCKR)。
每个I/O 口的特殊硬件特性都列表于数据手册里,GPIO 口的每个口可以被软件独立的配置
许多模式:
——输入悬浮
——输入上拉
——输入下拉
——模拟输入
——输出开漏
——输出上拉
——可选择功能上拉
——可选择功能开漏
每一个I/O 口可以自由的编程,但是,I/O 口寄存器必须以32 位字访问(不允许半字或字节
访问)。GPIOx_BSRR 和GPIOx_BRR 寄存器的目的是可以以原子的读/修改来访问每一个
GPIO 寄存器。这种方式,在读和修改之间不会有发生IRQ 这样的冒险。
Figure 9 说明了每个I/O 的基本结构。点击下载

系统分类: 单片机
用户分类: 无分类
标签: 无标签
来源: 转贴
发表评论 阅读全文(938) | 回复(6)

9

关于投票
[STM32入门]---利用ST提供的USB例程实现USB IAP功能
 我们知道ST推出的Cortex-M3平台STM32内部有两个Flash区域,一是System Flash,ST官方保留的一个区域,用于存放IAP代码。该区域不对用户开放,仅提供UART的通讯接口用于IAP升级;另一个区域是User Flash,这一部分是供用户自由使用的。STM32自带USB 2.0 Device接口,如果需要通过USB接口来实现IAP功能需要如何做呢?这里介绍如何利用ST STM32xx USB Development Kit提供的DFU代码来实现上述功能。我用STM3210EVB来演示这个功能。

    阅读前请下下载下列代码压缩包和应用软件:
1、STM3210B-EVAL demonstration software v1.1.zip
 STM3210B-EVAL demonstration software v1.1..zip(文件大小:2.15M) 

   ST官方的下载路径:
   http://www.st.com/stonline/products/support/micro/files/um0435.zip

2、STM32F10xxx USB developer kit v1.0.zip
 STM32F10xxx USB developer kit v1.0.zip (文件大小:461K) 

   ST官方的下载路径:
   http://www.st.com/stonline/products/support/micro/files/um0424.zip

3、DfuSe USB Device Firmware Upgrade v2.2.zip
 DfuSe USB Device Firmware Upgrade v2.2.zip (文件大小:7.85M) 

   ST官方的下载路径:
   http://www.st.com/stonline/products/support/micro/files/um0412.zip

    上述文档对于的用户参考手册,请自行到ST MCU网站下载。
    http://www.st.com/mcu/familiesdocs-110.html#Application%20Note


    下列步骤将介绍如何通过ST官方的USB升级代码实现程序的下载更新的功能(IAP)。

1、打开STM3210B-EVAL demonstration software压缩包,在STM3210B-EVAL demonstration software\Demo\source下打开main.c文件,找到void InterruptConfig(void) 函数

  /* Set the Vector Table base address at 0x08000000 */
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);

    这里我们需要修改代码的中断矢量起始地址,这样做的目的是为了处理IAP代码在Flash存放的区域与Application Code部分的存放空间不会发生地址冲突。这里我们假设IAP存放在User Flash的0x08000000~0x08003FFF区域,Application code存放在User Flash的0x08004000~0x0801FFFF区域。因为Application code的开始地址是由0x08004000开始,这样我们需要为应用代码的中断向量地址做一个重映射。因此我们修改该代码为:

  /* Set the Vector Table base address at 0x08004000 */
    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x4000);  

    请注意这里NVIC_SetVectorTable函数的型参送入的是相对偏移地址,而不是绝对地址;

2、在STM3210B-EVAL demonstration software\Demo\project\EWARM下找到lnkarm_flash.xcl文件,在XCL文件中找到下面的配置,该配置用于定制应用代码在Flash区域的存放空间和代码运行是RAM可以提供的空间。

    // Code memory in FLASH
    -DROMSTART=0x8000000
    -DROMEND=0x803FFFF

    // Data in RAM
    -DRAMSTART=0x20000000
    -DRAMEND=0x20004FFF

    由于我们的目标应用代码将是在0x08004000区域运行,因此我们修改为:

    // Code memory in FLASH
    -DROMSTART=0x8004000
    -DROMEND=0x801FFFF

    // Data in RAM
    -DRAMSTART=0x20000000
    -DRAMEND=0x20004FFF

    在编译的时候请确保Project->Options->Linker->Config标签下的链接命令文件选择的是上述lnkarm_flash.xcl文件;

3、应用部分改好,现在我们修改USB固件升级部分的代码,打开STM32F10xxx USB developer kit开发包。

4、在开发包下面找到 \STM32F10xUSBLib\USBLib\demos\Device_Firmware_Upgrade例程,该例程是一个在STM32F10xx系列MCU上实现运行在User Flash区域的IAP自升级代码,通过STM32自身提供的USB接口实现。在\STM32F10xUSBLib\USBLib\demos\Device_Firmware_Upgrade\source路径下找到main.c文件,在56行:

       if (DFU_Button_Read() != 0x00)
       { /* Test if user code is programmed starting from address 0x8003000 */
               if (((*(vu32*)0x8003000) & 0x2FFF0000 ) == 0x20000000)
               { /* Jump to user application */

              JumpAddress = *(vu32*) (ApplicationAddress + 4);
               Jump_To_Application = (pFunction) JumpAddress;
               /* Initialize user application's Stack Pointer */
               __MSR_MSP(*(vu32*) ApplicationAddress);
              Jump_To_Application();
               }    
  } /* Otherwise enters DFU mode to allow user to program his application */

    这段代码的功能是对应用部分的代码开始地址做判断,这里的地址与我们之前的步骤1、2都是对应的。

    同样这个代码做如下更改:
        /* Test if user code is programmed starting from address 0x8004000 */
               if (((*(vu32*)0x8004000) & 0x2FFF0000 ) == 0x20000000)

5、hw_config.h中定义:
    #define ApplicationAddress 0x08003000
    改为
    #define ApplicationAddress 0x08004000
    
    编译代码,下载到STM3210 Evaluation Board。

6、在ST的网站中找到USB IAP的PC端用于程序DfuSe USB Device Firmware Upgrade,安装后执行DfuSe Demonstration程序。
点击看大图
  


7、改变STM3210 Evaluation Board的Boot选项为user Flash启动,启动时PC端Dfu中可以看到找到了开发板。
 
点击看大图
 



    如果提示需要找到新的设备,需要安装驱动,请将路径指向Dfu的安装路径下driver目录。如果Dfu中无法看到找到开发板,请按住Reset键再松开;如果按下Key键,STM32中运行的Dfu程序将退出IAP状态,PC跳到事先设置的应用程序的入口。

    Dfu提示找到STM3210EVB,显示需要编程的区域,一个是SPI Flash,另一个是STM32内部的Flash。
点击看大图
 
 

    SPI Flash的内容主要是提供LCD演示的图象和语言数据,需要写入的文件在STM3210B-EVAL demonstration software开发包的目录\STM3210B-EVAL_Demo\images下的STM3210B-EVAL_SPIFlash.dfu文件。

    STM32内部Flash需要写入的目标代码是前面修改的应用代码而不是USB IAP代码。这里需要注意的是IAR编译后的文件格式可以是S19、hex、bin,但Dfs烧写需要的文件是dfu格式,该格式可以通过安装的dfu文件下的DFU File Manager程序来转换得到。
 

8、上述的解释同样适用于STM32F10x系列在User flash区域的IAP代码操作流程,如UART BootLoader。需要注意的是这里介绍的UART IAP与STM32本身固化在System Flash区域通过UART升级的IAP不是完全相同的,尽管实现的功能一样。

9、执行玩上述步骤以后,确认STM3210EVB的Boot跳线为User Flash启动。Reset后你就可以看到在STM3210EVB上出现漂亮的GUI啦。

补充:
    在ST官方提供的USB IAP例程中我们可以在main.c中找到:
if (DFU_Button_Read() != 0x00)
{
…………
}

    通过该函数我们可以知道,USB IAP是通过判断PB.09端口的高低电平实现地址跳转的,对于其它形式的STM32电路板,我们可以仅仅简单的修改一下这个判断方式,即可利用ST提供的现成代码简单快速的实现USB IAP下载功能。


本文PDF格式:
利用ST提供的USB例程实现USB IAP功能.pdf(文件大小:254K)





下面是网友的博客__________________________
欢迎大家访问我的Blog

http://blog.csdn.net/grant_jx/
系统分类: 单片机
用户分类: 无分类
标签: 无标签
来源: 转贴
发表评论 阅读全文(1037) | 回复(5)
总共 , 当前 /