嵌入式stm32生产实习指导书_第1页
嵌入式stm32生产实习指导书_第2页
嵌入式stm32生产实习指导书_第3页
嵌入式stm32生产实习指导书_第4页
嵌入式stm32生产实习指导书_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动化系生产实习STM32开发平台实验指导书电气工程学院自动化系2014年8月11日目录第一部分STM32电路板整体介绍1第一节电路板资源2第二部分软件介绍及开发流程5第一节Keil软件介绍5第二节程序下载7第三部分实验内容介绍8第一节LED灯亮灭实验8第二节按键实验8第三节数码管实验10第四节外部中断实验14第五节定时器实验14第六节串口实验11综合实验一光敏电阻AD实验13综合实验二存储器实验15综合实验三温度测量实验15综合实验四时钟实验16附录:STM32核心板电路图第一部分STM32电路板整体介绍第一节电路板资源STM32平台采用核心板+外围板方式。核心板主要包括STM32F103V

2、ET(S:小系统、按键、LED灯、TF卡、串口和JTAGfe路。可以完成STM32内部资源的大部分开发应用。外围板包括数码管电路、存储器电路、红外、光敏电阻、温度传感器、ULN2003电路、步进电机、蜂鸣器、DS1302时钟电路和CAN总线等电路设计,基本包括了STM32的所有资源、同时又对IIG单总线、SPI总线、CAN总线等协议进行了硬件设计。可以说,如何将核心板和外围板调试完成,就掌握了大部分的STM32内容。如图1所示为核心板电路图。图1核心板电路资源介绍核心板的资源有:2. MiniUSB插座,具有通信功能,可进行USB通信实验3. 电源模块,可以为系统提供3.3V电源4. 单片机最

3、小系统,包括晶振,复位电路,去耦电容等5. 4个LED灯6. 4个按键电路7. TF卡电路8. 一个DB9头的串口外围板主要为了进行功能的扩展,尽可能的发挥STM32的资源。如图2所示:图2STM32外围板资源图外围板的资源有:1. 2个四路数码管2. 1个ULN2003电路、1个步进电机3. 1个蜂鸣器4. 1个24C02芯片5. 1个红外检测芯片HX18386. 1个光敏电阻7. 1个DS18B2姗度检测芯片8. 1个DS1302时钟芯片9. 1个CAN通信芯片TJA1050第二部分软件介绍及开发流程第一节Keil软件介绍进入PC的桌面,点击图标:KeiluVision4,进入如下MDK主

4、界面,这时候编辑区内什么都没有。如图3所示:图2-1KeiluVision4软件界面点击Porject,然后选择OpenProject,如图2-2所示jCi”用a«*+r库*号1-1七;鼻二CUv-iitaHOitarXU,7nV4CWJUIHJMHl!fl.Xfl.liZi>*"1im.vt川ifE与ifHij,:电餐fm喝fSirln-11fa-tea31iE-.-rVl-.HTJXi"OW",_TBT».0feLiwilit品eI1>MH-|!Irr.5ijifa|-jm.Ll»-r-sIt,里产JAiJ5-B,4-

5、H.AHWM-u.LJi.-iIIr-jJOUIrrS«M-riw*-.ifVTW/wfuBniri«ii>Mvi"wv"uii>t>4M.->曦kwt"j图2-2打开工程过程图选择工程文件,如图2-3所示:图2-3打开工程过程图这样就可以编辑程序了。如图2-4所示:图2-4打开工程过程图第二节程序下载在下载程序之前,首先需要安装CH341驱动,在安装驱动过程中不要将用口线插在电脑上。驱动安装成功后,插上USB转用口线连接PC机和STM32核心板,打开这个图标,mcuisp.&Ke 司晦川司p,效果如图2-5所示

6、:图2-5ISP程序下载点击联机下载时的程序文件,然后选择要下载的hex(目标文件)程序,如图2-6所示:S3 »|图2-6 ISP程序下载这时候,要将BOOT0跳线帽摘下,BOOT1跳线帽插上,按下复位就可以下载程序了,下载完成后,要将BOOT0跳线帽插上就可以了第三部分实验内容介绍第一节LED灯亮灭实验开发步骤:1) 为控制LED灯,知道要使用GPIO(通用输入输出口)外设;2) 简单了解GPIO外设的功能;3) 在编写工程时,首先包含要用到的头文件;4) 进行GPIO外设的配置(包括:1.定义结构体;2.打开外设时钟;3.给结构体成员赋值;4.初始化外设;5.如果外设需要使能,

7、就使能外设;6.如果需要配置中断,就配置NVIC);每个外设在使用之前都需要先开启外设时钟,不同的外设可能挂在不同的时钟总线上,所以需要对STM32的时钟树简单了解。5) 在主函数中首先要调用外设配置函数,然后在主函数中编写用户程序。参考STM32固件库和参考手册进行学习。GPIO实验主要是测试STM32的输入输出口的一个实验,就是对IO进行高低电平输出和对外界环境导致的高低电平输入。可进行的实验就是对LED亮灭的控制和对按键状态的读取。图3-1为LED灯的电路图。VDI)LED图3-1LED灯电路图由图中可以知道PB6PB7、PB&PB9连接了四个LED灯。控制灯的亮灭就是对4个IO

8、的电平的控制,当输出高电平的时候LED灭,输出低电平的时候LED形成通路,就亮了。下面简要介绍一下程序。1)声明GPIO的结构GPIO_InitTypeDefGP10_In.itStruct;这条语句是定义了一个GPIO_InitTypeDef类型的结构体变量,结构体变量名就是GPIO_InitStruct.2)初始化GPIO时钟RCC_APR2Ppri.phClack:Cnid(FCC_APRzPariph_GPTOB,FNARTjE);/伊能仁父下的时密3)给结构体变量赋值并初始化GPIQgeioinirstrucz.gpioPin=gpioPin|gpioPin7|gpidPineIgf

9、工口Pin9;GPicTinitstrucc.GFTo2sPeed=GF?o_speed_5CMH2:GPTO_-nitStruct.GPIO_T4odp三GPTai-fodeOiit_3P;GE工Q二工nitfGPI03,SGPIC_InitStrict?由上可以看出,主要是三个成员变量,GPIO_Pin,GPIO_Speed,GPIO_Mode这三个变量分别控制着GPIO的引脚、速度和模式。这样GPIO的初始化就完成了,接着就可以调用GPIO_SetBits(前GPIOResetBit这两个函数来控制LED的亮灭了。第二节按键实验同样对按键的处理就是将按键的GPIO口设置为输入状态,进而t

10、取IO口的电平即可,按键电路图如图3-2所示:J1|-1*1|-J*1I-J|-图3-2按键电路图按键的处理主要是初始化的情况不同,如图3-3所示:voidKt?y_GPIO_CarfigVOid)IICFIO_In二¥1电口&£SPIO_IrilLSt.r.ucT;RCC_APB25briphClotkCrftd(R0C_A5B2Perith_GPTOE,ENABLE);.'/''更育3值PI3三白勺,二辛中gpioiniLficrjcl.spiorin=cpioPin0IgpioPin工gfi©Pin2IgpioPin3iGPr

11、OTnitStruet.SPTOModt-GPiaMoaeTHFLOATTHG;GPic_iniT(GPiQEriGpiq_lnitstruer-;)图3-3按键初始化程序接下来就可以用GPIO_ReadInputData的数来读取端口的状态了,当然了也可以单个读取,需要同学们自行研究和调试。第三节数码管实验数码管,其实也是对IO口的控制,只不过需要了解它的发光原理,以及逻辑控制,如图3-4所示,是4路数码管的电路图,我们采用的是共阴连接的方式。MT03641BR图3-44路数码管电路图同样是对IO的控制,只不过我们采用了74HC573驱动芯片,因为单片机输出的电流不足以点亮数码管,所以用了数

12、据芯片进行了驱动,74HC573是一个数据缓冲器,详细资料百度一下便可。数码管电品&图如图3-5所示:HS 0.HHHH H图3-5数码管电路图数码管采用动态扫描的方式,可以显示不同的数字和简单的字母。它的初始化和实验一类似,采用推挽输出的方式。唯一需要注意的是,它要先进行编码。1i_Cod*tS11Oxfd/3x«ffCxdfuxtfjirSHG_ITdlaCode16=Dx3frQxSb,CiK4fF,0x6df0M7dFuxO7jOK"JffOsififr0x7"',0x1(,F0s5e,ix7S-p.OxVl;有关编码的方式,课上会讲到。接

13、下来就可以,进行动态扫描处理了,如图3-6所示:voidSMGDisplay(uint0tdatwelafuiat£tdatdula)l(Dulm(OFF);iWeldi(OM);GPZOWritefGPZOE,darwola«8):Wela(OFF);Dula(ON);GPOWrits(GPIOE,dat_dula«8);DulaloFF)p图3-6数码管动态扫描第四节外部中断实验中断在一个微处理器中地位很重要,我们STM32的所有的输入输出引脚都可以独立的配置为外部中断,我们这儿采用的是STM32F103VET6它有80个输入输出引脚,这样就可以包括80个外部

14、中断。这儿采用的是检测按键的状态,硬件电路参考第一节按键的电路图。这里主要涉及到一个NVIC的概念,其他的和GPIO配置差不多,NVIC是中断嵌套向量控制器的意思,它是芯片的CPU和外部资源中断配置的一个部分,它的程序主要如图3-11所示:voidKEY_EXTI_Config()GPIO_InitTypeDefGPIO_InitStructure;定义结构体配置GPIOEXTI_InitTypeDefEXTI_InitStructure;定义结构体配置外部中断EXTIRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO

15、,ENABLE);打开GPIOE时钟和复用时钟NVIC_Config();调用中断配置函数GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;结构体成员赋值GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;GPIO_Init(GPIOE,&GPIO_InitStructure);初始化GPIOGPIO_EXTILineCon巾g(GPIO_PortSourceGPIOE,GPIO_PinSourc喇黄EXTI的中断线EXTI_InitStructure.EXTI_Line=EXTI_Line0;结构体成员赋值EXTI_Ini

16、tStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);初始化staticvoidNVIC_Config(void)中断配置函数NVIC_InitTypeDefNVIC_InitStructure;定义结构体NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);设定优先级组(确定抢

17、占优先级和响应优先级个数)课堂上会详细讲解NVIC_InitStructure.NVIC_IRQChannel=XTI0_IRQn结构体成员赋值NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0抢占优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;响应优先级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);初始化图3-11EXTI和NVIC的配置NVIC中的这儿主要听老师在课堂

18、的讲解。中断服务函数在stm32f10x_it.c中编写,中断服务函数的函数名定义在startup_stm32f10x_hd.s中查找。在中断服务函数中可能需要用到extern声明:extern可以置于变量或者函数前、以标示变量或者函数的定义在别的文件中、提示编译器遇到此变量和函数时在其他模块中寻找其定义。第五节定时器实验定时器,也是一种中断,它通过不断的计时达到某个时刻做什么事情的目的,它可以产生捕获和PWM常见的两种方式。其中捕获又是测量脉冲的重要方式、PWM则主要用于电机调速等方面。定时器配置:1秒定时TIM_TimeBaseInitTypeDefTIM_TimeBaseStruct;定

19、义结构体RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE时钟TIM_TimeBaseStruct.TIM_Period=2000;自动重装载寄存器周期的值(计数值)累计TIM_Period个数后产生一个中断TIM_TimeBaseStruct.TIM_Prescaler=36000;时钟预分频数72MHz/36000=2000Hz计数2000刚好等于1秒TIM_TimeBaseStruct.TIM_ClockDivision=TIM_CKD_DIV1;采样分频TIM_TimeBaseStruct.TIM_CounterMode=TIM_Coun

20、terMode_Up;向上计数模式TIM2_NVIC_Config();定时器中断优先级配置TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStruct)初始化TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);开启计数溢出中断TIM_Cmd(TIM2,ENABLE);使能TIM2TIM2中断优先级配置:voidTIM2_NVIC_Config(void)NVIC_InitTypeDefNVIC_InitStruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStru

21、ct.NVIC_IRQChannel=TIM2_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStruct.NVIC_IRQChannelSubPriority=0;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStruct);同学们在完成指定任务之后可以自主学习用定时器产生占空比可调的PWM波,控制电机转速或者产生呼吸灯效果。第六节串口实验串口主要是指采用DB9头和电脑的串口进行通信,采用的协议是RS232这是一种很常见的

22、通信方式,是一些上位机和下位机通信的协议。但是工业现场更多的选择的协议是RS485它是在RS232的基础上演变而来的。所以学习串口通信很有必要性。图3-7是串口通信的电路图。图3-7串口电路图由图可知,主要是PA9和PA10进行的通信。也就是说,STM32的串口资源的端口映射的是PA9和PA10当然也可以查询datasheet,映射别的IO口。对申口的通信主要是对串口的初始化,如图3-8所示:voidHSABT1Contig(voidjh-ICPIO_TnitTypsD*fGPIOTnitStruct;U£ART_ini-1.ypeDetC二1二£trucn;RCC_APB

23、2PcriphClockCradlRCC3223eriph_GP二OAIRCC_Ai32£5riph_AfI0|EtCC_AFB2Ptfriph_US5J?LrlJ-1NAB1E);-7笠可也置夏用的时'AG?IO_IItitSt£LlCt.GPIO_fit-GEIOPinS;GPI(TinistructGPIO£Gpeed-3PTO_3peed_SO«HEjGrio_initstru=t,MiaModo-GPiGMcdlcAfPE;GPICTr.'t(G?IOSf*GFIO_IniT5-ruct);GricTlnitstrust.&am

24、p;PlQ_Pin-GPiaPinlO;GPTOTnitStruct.GPlOMcxj&=GPI0_Mod&_TN_FLOATTNG;GPIO_In.it(GPIOA,iGPIOlni-Struc"?;ART_InixS-ruct.U£ART_DaudRate-LxS2ijO;vsART-lnitS-ract.uSrtRl-ffoidL*tigTh-usart_xrdLsngxhSbf'JS.?T_Tri-Structt?=nn?Rl_5trp-,it?_'i;usart-inixseuct.usari-pirity-usartParityu

25、o;"¥SAKT_TnitStruct.U3AHT_McxiB-UEARTJfode_T?JuSAFTFdFx;口目乐T_Ini二struct,usaf.t_hirows工白F二0x二cnt工二1一usafT_Hir3warerlcwcc及:二口1no;U5ART_lnit(USARTi,iUSART_Jnitstruct);USAF.TCmdtI7SART<rFMAFT.EJ;I图3-8串口的初始化串口同样需要配置NVIV,只需更改NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;其它配置与定时器NVIC配置相同。可以看到协议采

26、用的是115200-8-n-1(波特率115200、通信数据字长8位、无奇偶校验、1位停止位)的形式,在上位机也要采用同样的配置就可以进行通信了。电脑端使用的是用口调试助手。当口谴试。''动手二三3F133端口期率|:15200校晚位皿L僖止位p三®打开一口清空融区撕区停止显不审自动清空十六世制显示接收文件而保存数蛆更改路径cTvcOflDMAV"清空重填I)辘区I1S面发法"迸刎钙I自动发送国期|1其。砂空港发送文件I还没有选择文件发法文件出国市瓦COMPortClosed场工板:口计数患零退出图3-9串口调试助手综合实验一AD实验AD是模拟世界

27、进入数字世界的一个通道,它是一个转换器,众所周知,世界是模拟的,也是连续的。所以对外界的测量主要是对AD的配置。我们采用的是光敏电阻,通过外界光线的不同导致电阻值变化进而电压变化,这样测量电压值的大小,便可以知道光线的强弱。光敏电阻电路电路图如图3-10所示:图3-10 光敏电路图同样主要是对STM32内部AD资源的初始化配置,ADvoidADC1_GPIO_Config(void)配置模数转换IO口/PA0<>ADC1GPIO_InitTypeDefGPIO_InitStructure;定义结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO

28、A|RCC_APB2Periph_ADC1,ENABLE);打开时钟GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;定义端口GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;模拟输入GPIO_Init(GPIOA,&GPIO_InitStructure);初始化voidADC1_Config(void)模数转换模式配置ADC_InitTypeDefADC_InitStructure;定义结构体ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;独立ADC模式ADC_InitStructure.ADC_ScanConvMode=DISABLE止扫描模式,扫描模式用于多

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论