找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9004|回复: 0
收起左侧

安富莱stm32开发环境和例程功能说明

[复制链接]
ID:209542 发表于 2017-6-9 14:44 | 显示全部楼层 |阅读模式
如果有想要的朋友可以私信我  这个只能上传这么大的东西

/*
*********************************************************************************************************
*
*                              【安富莱】STM32-V4 开发板-开发环境说明
*
*    最后更新日期:2015-08-30
*
*    推荐将编辑器的缩进参数和TAB设置为4 来阅读本文件
*
*********************************************************************************************************
*/

【1】CPU内部资源
    CPU型号        : STM32F103ZET6 / LQFP-144 / ARM 32-bit Cortex-M3
    主频           : 72MHz
    内部Flash容量  : 512KB
    内部SRAM容量   : 64KB
    定时器         : 11个
    UART           : 5个
    SPI            : 3个 (2个可复用为I2S)
    I2C            : 2个
    ADC            : 3个独立的12位ADC
    DAC            : 2路独立12位DAC
    CAN            : 1个 CAN 2.0B
    SDIO           : 1个
    USB            : USB2.0全速(从)无需外部PHY。

【2】FSMC存储器地址分配
       CPU内部 FLASH  【0x0800 0000 - 0x080F FFFF】,容量512K(0x80000)字节
    CPU内部 SRAM1  【0x2000 0000 - 0x2000 FFFF】,容量64K(0x10000)字节
   
    外部 NOR Flash 【0x6400 0000 - 0x64FF FFFF】,容量16M(0x1000000)字节
    外部 SRAM      【0x6800 0000 - 0x681F FFFF】,容量1M(0x100000)字节
    DM9000A芯片地址【0x6C10 0000,  0x6C10 0008】, 仅占用2个端口地址
    TFT LCD地址    【0x6C00 0000,  0x6C00 0002】, 仅占用2个端口地址
    OLED地址       【0x6C20 0000,  0x6C20 0002】, 仅占用2个端口地址
    外部 NAND Flash【0x7000 0000】, 容量128M(0xC800000)字节


【3】I2C总线外设地址分配
  序号    器件                      地址
    1    串行EEPROM  AT24C128       0xA0
    2    音频CODEC芯片WM8978          0x34
    3    FM收音机Si4704            0x22
    4    陀螺仪 MPU-6050           0xD0
    5    光照度传感器 BH1750FVI    0x46
    6    大气压 BMP180             0xEE
    7    磁力计HMC5883L            0x3C  【外置的模块,选配】

【4】开发工具
    【仿真器】 --- 非标配,单独选购
    虽然STM32支持串口ISP下载程序,但是不支持在线调试。使用串口下载,开发效率极低,因此强烈推荐购买一个仿真器,提高开发效率。
    - ST-LINK V2 仿真器: ST公司开发的仿真器,可以下载程序和调试跟踪程序。支持STM8和STM32。一般用来开发STM8S。如果开发
      STM32的话, 还是建议购买J-Link仿真器
    - J-LINK V8,V9仿真器 : Segger公司开发的仿真器,可以下载程序和调试跟踪程序。支持所有ARM系列。

    【USB转RS232串口线】--- 开发板配送
    - 现在大多数PC机都没有硬件串口了。但是对于单片机串口还是很有用的。安富莱的很多例程都需要通过串口打印调试信息。
    - 开发板配送了一根HL-340型号的USB转RS232线。支持WIN XP, WIN7, WIN8 系统。

    【开发软件】
    - 编译环境 IAR EWARMv6 和 KEIL 的 MDK uV4。请按需选择,如都不熟悉,推荐使用KEIL MDK (uV4)。
    - SecureCRT : 一个优秀的功能强大的超级终端工具,主要用来显示开发板从串口打印出来的信息
    - UltraEdit : 一个优秀的源代码编辑工具
    - SourceInsight : 一个优秀的源代码浏览工具

【5】编译和调试方法
  说明:安富莱的例程均提供 KEIL 和 IAR两种工程,每个工程中设置了2个Target,一个是在Flash巡行的,一个是在CpuRAM运行的。请按需要选择。
  如果需要不修改Flash中的程序调试新的例程,可以选择在CPU RAM运行。
  >>>> 有些程序(比如出厂测试程序)体积很大,无法在有限的RAM空间执行。

    【Keil MDK】V4.54
        - 执行菜单 Project -> Open project                 打开 \Project\MDK-ARM(uV4)\project.uvproj (这是工程文件)
         - 执行菜单 Project -> Rebuild all target files     重新编译所有的文件:
         - 执行菜单 Debug->Start/Stop Debug Session (Ctrl+F5)  启动调试:

         【备注1】选择在CPU RAM运行时,不能使用Load按钮下载程序,请直接Start Debug即可。因为Load按钮是专门用于下载到Flash的。
         【备注2】对于Keil MDK,为了避免中文字符串告警,需要在C/C++编译选项中增加 --diag_suppress=870 参数。
        【备注3】为了提高编译效率。我们缺省关闭了工程设置 Output - Browse Information。因此无法使用鼠标右键查找函数定义。
                  如果你需要这个功能,请打开这个选项开关。

    【IAR EWARM】V6.30
        - 执行菜单 File -> Open Workspace          (打开工程文件: Project\EWARMv6\Project.www)
         - 执行菜单 Project -> Rebuild All          (重新编译整个工程)
         - 执行菜单 Project -> Download and Debug(Ctrl+D)   (装载程序并启动调试)

【6】例程文件夹说明
├─Libraries :  存放第3方提供的库或其源代码,这些代码一般是成熟的并经过验证的代码。
│  ├─CMSIS :  CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。
│  ├─STM32F10x_StdPeriph_Driver : STM32F10X系列MCU的标准固件库源代码
│  └─STM32_USB-FS-Device_Driver : USB Device Library

├─User      :  这里存放用户自己编写的源代码
│  ├─bsp    :  板级支持包(Board Surport Packet),也就是硬件底层驱动程序. 该层介于固件库和应用程序之间。
│  └─fonts  :  存放点阵字库常量数组

└─project   :  这里存放各类开发工具的工程文件,编译过程中的临时文件和最终HEX文件都放在此文件夹
    ├─MDK-ARM(uV4) : KEIL公司MDK uVision 4工程文件夹
    └─EWARMv6 : IAR公司的EWARM 工程文件夹

【7】工程中源代码分组说明
└─Flash               : Target名称,Flash 或 CpuRAM
   ├─USER             : 存放 main.c 以及用户用用程序
   ├─BSP              : 板级支持包(Board Support Packet),存放硬件底层驱动文件
   ├─CMSIS            : 仅存放CMSISI接口文件 system_stm32f4xx.c
   ├─StdPeriph_Drivers: 存放STM328S系列MCU的固件库源代码
   ├─MDK-ARM          : 启动文件(汇编源程序),对于IAR是 EWARMv6
   └─Doc              : 存放一些文档,仅限txt文件

【8】公共源代码文件说明
    - main.c          : 用户主程序,存放main()函数的文件
    - stm32f1xx_it.c  : 集中存放中断服务程序 【除了几个异常中断外,我们建议其他的ISR放到各自的模块中】
    - stm32f10x_assert.c : 存放断言函数   (一般无需更改)
    - bsp.c           : 底层硬件驱动程序的主程序(包含硬件初始化入口函数)
    - 清除目标文件(用于打包备份).bat : 执行这个程序会删除OBJ,LIST文件,方便对源代码进行压缩打包。

【9】C编译器中的预定义宏 (在工程设置中更改)
    USE_STDPERIPH_DRIVER  - 增加这个符号表示使用ST公司的标准外设库
    VECT_TAB_SRAM         - 增加这个符号表示中断向量表定位在CPU内部RAM (针对在CPU内部RAM运行的工程才需要添加)

【10】调整堆和栈的容量
    对于KEIL MDK, 设置堆和栈的大小是通过修改启动文件start_stm32f10x_hd.s 文件实现的,比如:
        Stack_Size      EQU     0x00008000
        Heap_Size       EQU     0x00000400

    对于IAR EWARM, 直接在工程设置中进行修改即可
        - 菜单 project -> options -> 选择Linker -> Config页 -> 点Edit按钮 -> 切换到CSTACK/HEAP
        比如:
            CSTACK = 0x8000
            HEAP   = 0x400        

【11】输出目标文件
    在 project 下面,有编译好的 hex 文件,用户可以用仿真器直接下载 output(flash).hex 到CPU内部flash   
    \Project\output(mdk).hex - 采用KEIL MDK编译好的文件,定位在CPU 内部Flash   
    \Project\output(iar).hex - 采用IAR编译好的文件,定位在CPU 内部Flash   
    \Project\MDK-ARM(uV4)\Flash\List\output.map  - 这是编译链接文件,文本格式,可以查看每个函数、变量的地址和空间分配情况。

【附录1】 STM32-V4开发板 GPIO分配表
  按GPIO次序排列, 一共140个GPIO。GPIOA – GPIOH 每组16根,GPIOI 只有12根。
    PA0/WKUP                                    WKUP按钮 -- K1按键
    PA1/DM9000AE_INT                            以太网芯片DM9000AE中断
    PA2/USART2_TX                               串口2发送
    PA3/USART2_RX                               串口2接收,可外接GPRS模块
    PA4/DAC_OU                                  DAC1输出
    PA5/SPI1_SCK                                SPI总线时钟/DAC2输出
    PA6/SPI1_MISO                               SPI总线MISO
    PA7/SPI1_MOSI                               SPI总线MOSI
    PA8/IR_TX                                   蜂鸣器
    PA9/USART1_TX                               串口1发送(RS232)
    PA10/USART1_RX                              串口1接收(RS232)
    PA11/USBDM                                  全速(12Mbps)USB接口数据线D-
    PA12/USBDP                                  全速(12Mbps)USB接口数据线D+
    PA13/JTMS-SWDIO                             SWD调试接口数据线
    PA14/JTCK-SWCLK                             SWD调试接口时钟线
    PA15/ESP8266_GPIO2                          串口WIFI模块控制IO

    PB0/IR_RX                                   红外遥控接收管
    PB1/LCD_PWM                                 LCD背光控制(对于RA8875屏无用,背光由RA8875控制)
    PB2-BOOT1/RS485_TXEN                        RS485发送使能
    PB3/NRF24L01_CE                             NRF24L01使能
    PB4/TRST/GPRS_TERM_ON                       串口WIFI电源管理/GPRS模块开机信号
    PB5/TP_BUSY/VS1053_DREQ                     触摸屏BUSY/VS1053B的是否接收数据请求
    PB6/I2C1_SCL                                I2C1串行时钟控制
    PB7/I2C1_SDA                                I2C1串行数据控制
    PB8/CANRX                                   CAN接收
    PB9/CANTX                                   CAN发送
    PB10/USART3_TX                              串口3发送,接RS485收发芯片
    PB11/USART3_RX                              串口3接收,接RS485收发芯片
    PB12/I2S2_WS                                I2S数字音频接口声道选择信号
    PB13/I2S2_CK                                I2S数字音频接口时钟信号
    PB14/USB_PULLUPENBLE                        USB上拉使能
    PB15/I2S2_SD                                WM8978录音

    PC0/ADC123_IN10                             ADC输入 - 接示波器通道1
    PC1/ADC123_IN11                             ADC输入 - 接示波器通道2
    PC2/ ADC123_IN12/GPRS_RESET                 ADC输入/ESP8266外部硬件复位
    PC3/ ADC123_IN13/NRF24L01_CSN               ADC输入/NRF24L01片选信号选择                 )
    PC4/ ADC12_IN14                             可调电阻ADC测试
    PC5/ TP_INT                                 触摸笔中断(RA8875中断)
    PC6/I2S2_MCK                                I2S数字音频接口时钟源
    PC7/ SD_INSERT                              SD卡插入检测
    PC8/SDIO_D0                                 SDIO数据线D0
    PC9/SDIO_D1                                 SDIO数据线D1
    PC10/SDIO_D2                                SDIO数据线D2
    PC11/SDIO_D3                                SDIO数据线D3
    PC12/SDIO_CK                                SDIO时钟
    PC13/TAMPER                                 K1按键/侵入测试/PS/2时钟控制
    PC14-OSC32_IN                               32768Hz时钟输入
    PC15-OSC32_OUT                              32768Hz时钟输出

    PD0/ FSMC_D2                                FSMC数据总线D2
    PD1/FSMC_D3                                 FSMC数据总线D3
    PD2/SDIO_CMD                                SDIO命令
    PD3/JOY_D                                   摇杆下键
    PD4/FSMC_NOE                                FSMC控制总线读信号(N表示低有效,OE = Output Enable)
    PD5/FSMC_NWE                                FSMC控制总线写信号(N表示低有效,WE = Write Enable)
    PD6/FSMC_NWAIT                              FSMC总线等待信号
    PD7/FSMC_NCE2                               FSMC片选NCE2
    PD8/FSMC_D13                                FSMC数据总线D13
    PD9/FSMC_D14                                FSMC数据总线D14
    PD10/FSMC_D15                               FSMC数据总线D15
    PD11/FSMC_A16                               FSMC地址总线A16
    PD12/FSMC_A17                               FSMC地址总线A17
    PD13/FSMC_A18                               FSMC地址总线A18
    PD14/FSMC_D0                                FSMC数据总线D0
    PD15/FSMC_D1                                FSMC数据总线D1

    PE0/FSMC_NBL0                               FSMC字节选择信号,用于SRAM
    PE1/FSMC_NBL1                               FSMC字节选择信号,用于SRAM
    PE2/CH376T_INT                              CH376T芯片的中断信号
    PE3/FSMC_A19                                FSMC地址总线A19
    PE4/FSMC_A20                                FSMC地址总线A20
    PE5/FSMC_A21                                FSMC地址总线A21
    PE6/FSMC_A22                                FSMC地址总线A22
    PE7/FSMC_D4                                 FSMC数据总线D4
    PE8/FSMC_D5                                 FSMC数据总线D5
    PE9/FSMC_D6                                 FSMC数据总线D6
    PE10/FSMC_D7                                FSMC数据总线D7
    PE11/FSMC_D8                                FSMC数据总线D8
    PE12/FSMC_D9                                FSMC数据总线D9
    PE13/FSMC_D10                               FSMC数据总线D10
    PE14/FSMC_D11                               FSMC数据总线D11
    PE15/FSMC_D12                               FSMC数据总线D12

    PF0/FSMC_A0                                 FSMC地址总线A0
    PF1/FSMC_A1                                 FSMC地址总线A1
    PF2/FSMC_A2                                 FSMC地址总线A2
    PF3/FSMC_A3                                 FSMC地址总线A3
    PF4/FSMC_A4                                 FSMC地址总线A4
    PF5/FSMC_A5                                 FSMC地址总线A5
    PF6/MPU-6050_INT/NRF24L01_IRQ               SPI插座 (NRF24L01 / MPU-6050的中断)
    PF7/ESP8266_GPIO0/LED2                         ESP8266工作选择状态/LED2复用
    PF8/VS1053B_XDCS/LED3                       VS1053B数据片选/LED3复用
    PF9/VS1053B_XCS/LED4                        VS1053B片选输入信号/LED4复用
    PF10/CH376T_SCS                             CH376T SPI片选
    PF11/SF_CS/LED1                             控制串行Flash片选/LED1复用
    PF12/FSMC_A6                                FSMC地址总线A6
    PF13/FSMC_A7                                FSMC地址总线A7
    PF14/FSMC_A8                                FSMC地址总线A8
    PF15/FSMC_A9                                FSMC地址总线A
   
    PG0/FSMC_A10                                FSMC地址总线A10
    PG1/FSMC_A11                                FSMC地址总线A11
    PG2/FSMC_A12                                FSMC地址总线A12
    PG3/FSMC_A13                                FSMC地址总线A13
    PG4/FSMC_A14                                FSMC地址总线A14
    PG5/FSMC_A15                                FSMC地址总线A15
    PG6/FSMC_INT2                               NAND Flash忙信号
    PG7/JOY_OK                                  摇杆OK键
    PG8/PS/2_DATA/DS18B20_DQ                    PS/2接口/DS18B20数据线
    PG9/FSMC_NE2                                FSMC总线片选NE2
    PG10/FSMC_NE3                               FSMC总线片选NE3
    PG11/TP_NCS                                 3.5寸屏触摸芯片的片选或RA8875屏SPI接口的片选
    PG12/FSMC_NE4                               FSMC总线片选NE4
    PG13/JOY_R                                  摇杆右键
    PG14/JOY_L                                  摇杆左键
    PG15/JOY_U                                  摇杆上键











/*
*********************************************************************************************************
*
*                              【安富莱】STM32-V4 开发板-例程功能说明
*
*    例程名称       : V4-003_串口和PC机通信(串口中断、FIFO机制)
*
*    推荐将编辑器的缩进参数和TAB设置为4 来阅读本文件
*
*********************************************************************************************************
*/

【1】例程简介
   
    本例子实现了 printf 函数打印数据到串口1(STM32的USART1)。串口1是开发板的RS232接口。请使用USB转RS232线
    连接到PC机的USB接口,然后在PC机上运行一个串口工具软件即可观察到程序输出的信息。
    我们推荐使用 SecureCRT 软件(内含串口超级终端功能)。
   
    使用printf打印到串口,只需要在工程添加两个函数即可。
        int fputc(int ch, FILE *f)   ----- 函数内实现将字符输出到串口1
        int fgetc(FILE *f)           ----- 函数内部实现从串口1读入1个字符
    注意只需要在工程中加入这两个函数即可,不需要显性调用他们,因为C库会调用他们的。
   
   
    采用printf作为一种调试手段和例程功能演示是非常方便的,因为printf支持强大的数制转化功能,可以将整数转换
    为多种格式字符串。使用PC机超级终端软件可以和STM32进行双向交互。
   
    后面很多例程将使用串口界面来输出程序运行结果。这样做的好处是:无需增加复杂的显示程序和汉字库。通过计算
    机的键盘传递用户操作指令给STM32。 整个例程只占用一个串口资源完成用户和STM32之间的信息交互。
   
    printf 是标准c函数,任何c编译器都支持,只不过支持的程度不同。本例程也使用了 sprintf函数将格式化后的字符串
    放到一个内存缓冲区,这个函数的用法和printf类似。只不过printf是将字符串直接打印输出到串口。
   
   
    主程序实现功能:
        (1) PC机键盘输入1、2、3、4,可以分别控制LED1-LED4。按一下点亮,再按一下熄灭。
        (2) PC机串口软件上会显示一个计数值,通过开发板摇杆的上下左右键可以控制在计数值变化。
   
    源代码说明:
    (1)bsp_uart_fifo.c 是串口驱动程序的核心文件。该函数中包含了每个硬件串口的中断服务程序。在中断服务程序中保存
        串口数据到全局的缓冲区。主程序可以通过comSendBuf()函数发送数据. 通过 comGetChar()函数读取接收到的数据。
    (2)串口驱动支持最多5个串口同时使用,而不会有任何冲突。
    (3)串口驱动支持RS485,在发送前使能发送引脚,在发送完毕后自动拉低发送使能引脚。
            

【2】执行结果
    使用USB转RS232线,连接开发板的RS232接口到计算机的USB接口。运行 SecureCRT 软件。
    操作开发板上的摇杆,可以在PC机串口软件上观察到变化的数字。
    在计算机键盘上输入数字键1、2、3、4可以分别控制开发板上的4个LED指示灯。
   
    下面是串口界面执行结果:
    *************************************************************
    * 例程名称   : V4-003_串口和PC机通信(串口中断、FIFO机制)
    * 例程版本   : 1.0
    * 发布日期   : 2015-08-30
    * 固件库版本 : 3.6.1
    * CMSIS版本  : 3.01
    *
    * QQ    : 1295744630
    * Email : armfly@qq.com
    *************************************************************
    操作提示:
    1. 摇杆控制count计数值
         上键 = +1
         下键 = -1
         左键 = -10
         右键 = +10
    2. PC上输入数字1-4控制开发板上的LED指示灯
    count =    -89     
   
   
【3】修改记录
2015-08-30 V1.0 首版


V4-003_串口和PC机通信(串口中断、FIFO机制)(V1.0).zip

2.08 MB, 下载次数: 43, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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