基于STM32F103嵌入式实验指导书

上传人:博****1 文档编号:511706939 上传时间:2023-07-18 格式:DOC 页数:18 大小:392.74KB
返回 下载 相关 举报
基于STM32F103嵌入式实验指导书_第1页
第1页 / 共18页
基于STM32F103嵌入式实验指导书_第2页
第2页 / 共18页
基于STM32F103嵌入式实验指导书_第3页
第3页 / 共18页
基于STM32F103嵌入式实验指导书_第4页
第4页 / 共18页
基于STM32F103嵌入式实验指导书_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于STM32F103嵌入式实验指导书》由会员分享,可在线阅读,更多相关《基于STM32F103嵌入式实验指导书(18页珍藏版)》请在金锄头文库上搜索。

1、实验一、STM32的开发环境与简单工程一、实验目的1、熟悉STM32开发板的开发环境;2、熟悉MDK创建和配置STM32工程项目的基本流程;3、熟悉STM32官方库的应用;4、规范编程格式。二、实验内容本次实验配置MDK集成开发环境,新建一个简单的工程文件,添加STM32官方库并配置工程,编译运行这个工程文件。下载已经编译好的文件到开发板中运行。学会在程序中设置断点,观察系统内存和变量,为调试应用程序打下基础。三、预备知识基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法。四、实验设备及工具硬件:STM32开发平台软件:STM32官方库;PC机操作系统Windows 98、Win

2、dows 2000或Windows XP;KEIL MDK集成开发环境;串口转usb驱动。五、实验步骤1、在准备存放工程文件的目录下创建一新文件夹,命名为Proj_GPIO;在Proj_GPIO文件夹里面分别再创建四个文件夹:CMSIS、USER、LIB、OBJ。如图1。其中CMSIS(Cortex Microcontroller Software Interface Standard)用于存放Cortex-M 处理器系列的与供应商无关的软件抽象层和启动相关的代码文件;USER用于存放我们自己编写的代码文件(含自己移植的底层驱动),还有MDK工程;LIB存放所有的官方底层驱动库文件;OBJ用于

3、工程输出的过程文件和最终的二进制文件。图12、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。1)把STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3DeviceSupportSTSTM32F10x下的所有文件都到第一步所创建的CMSIS文件夹中;2)把STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_StdPeriph_Driver目录下的

4、文件(目录inc和scr)复制到第一步创建的LIB文件夹中;3)把STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2;图24、新建一个空文档main.c保存到USER中,然后根据绝对路径将文件对应添加到工程中,如右图。5、配置工程属性,右键点击工程文件中的Ta

5、rget 1选择Options for Target Target 1打开工程选项对话框。做如下修改:1)Output选项勾选Create HEX File,然后点击Select Folder for Objects按钮定位输出文件保存目录到工程的OBJ文件;2)Listing选项,同样点击Select Folder for Listings定位输出文件保存目录到工程的OBJ文件;3)C/C+选项,Define中填入STM32F10X_HD, USE_STDPERIPH_DRIVER系统的两个基本宏定义;配置Include Paths属性,加入工程中包含头文件的目录;如右图4)后面Debug和

6、Utilities两个选项如果使用J-link或者其他调试器则需要做对应的修改,否则不用。6、根据实验任务硬件原理图编写代码实现四个按键控制led灯亮灭。1)其中用户按键和LED原理图如下:图52)根据原理图初始化各IO引脚,编写控制函数,然后主函数中调用。/* 函数名称:io_init* 函数功能:初始化PA0 PE2 PE3 PE4为输入口PE5 PB5为输出口* 参数: 无*/void io_init()GPIO_InitTypeDef gpin_init_struct;/使能每个IO口的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENA

7、BLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);gpin_init_struct.GPIO_Pin = GPIO_Pin_0;/PA0引脚gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;/IO速度为2MHzgpin_init_struct.GPIO_Mode = GPIO_Mode_IPD;/下拉模式GPIO_Init(GPIOA, &gpin_init_struct);/A口按

8、键gpin_init_struct.GPIO_Pin = GPIO_Pin_5;gpin_init_struct.GPIO_Speed = GPIO_Speed_2MHz;gpin_init_struct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &gpin_init_struct);/B口led1 GPIO_Init(GPIOE, &gpin_init_struct);/E口led2 gpin_init_struct.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;gpin_init_struct.GP

9、IO_Speed = GPIO_Speed_2MHz;gpin_init_struct.GPIO_Mode = GPIO_Mode_IPU;/上拉模式GPIO_Init(GPIOE, &gpin_init_struct);/E口按键、/* 函数名称: key_led* 函数功能: 根据按键情况控制led灯的亮灭 s1 s2控制led1;s3 s4控制led2* 参数: 无* 其他:其中LED1_ON LED1_OFF LED2_ON LED2_OFF为全局宏定义*/void key_led()if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)=0)LED1_

10、ON;if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3)=0)LED1_OFF;if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_2)=0)LED2_ON;if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)=1)LED2_OFF;#include stm32f10x.h#define LED2_ONGPIO_ResetBits(GPIOB, GPIO_Pin_5)#define LED2_OFFGPIO_SetBits(GPIOB, GPIO_Pin_5)#define LED1_ONGPI

11、O_ResetBits(GPIOE, GPIO_Pin_5)#define LED1_OFFGPIO_SetBits(GPIOE, GPIO_Pin_5)void io_init();void key_led();int main()io_init();while(1)key_led();3)代码编写完成后编译链接,通过下载软件将hex文件下载到实验板中运行验证。实验二、ucos操作系统的移植一、实验目的1、掌握ucos到STM32的移植方法;2、熟悉通过C语音处理底层寄存器的技巧;3、了解STM32在ucos任务切换时的处理;4、规范编程格式。二、实验内容本次实验通过用C语言编写6个操作系统

12、相关函数和用汇编语言编写4个与处理器相关的函数,将实时操作系统C/OS-移植到芯片STM32F103ZE中,并创建两个用户任务点亮led。学会操作系统的移植方法,深入掌握嵌入式操作系统C/OS-在初始化任务和任务调度的实现方法,直观了解实时操作系统的体系结构和设计思想。三、预备知识基本单片机硬件知识、单片机软件编程语言、程序创建和调试的基本方法、ucos操作系统的任务调度原理、STM32的寄存器架构。四、实验设备及工具硬件:STM32开发平台软件:STM32官方库;PC机操作系统Windows 98、Windows 2000或Windows XP;KEIL MDK集成开发环境;串口转usb驱动

13、。五、实验步骤1、按实验一的步骤新建一个工程Proj2_ucos。2、将移植好的ucos源代码整个拷贝到我们的新建的工程目录中,然后按对应的文件路径添加到keil工程里(os_dbg.c和os_dbg_r.c只添加一个),如图6和图7。图6 图73、配置工程相关属性(与实验一库应用配置一样),记得将ucos的头文件路径添加到工程的include path上面去,找到stm2f10x_it.c的PendSV_Handler函数注释掉,main文件中将includes.h包含进来,主函数为空,编译通过。4、在main.c中建立sys_init()函数编写操作系统运行需要的硬件相关初始化(见代码),然后修改stm32f10x_it.c中的系统心跳中断函数并加入头文件includes.h(见代码,)。/* 函数名称:sys_init* 函数功能:嵌套向量中断优先级分组,时钟心跳定时初始化1/200 s* 参数: 无*/void sys_init()NVIC_PriorityGr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号