搜档网
当前位置:搜档网 › stm32 游戏手柄实验

stm32 游戏手柄实验

stm32 游戏手柄实验
stm32 游戏手柄实验

#include "sys.h"

#include "usart.h"

#include "delay.h"

#include "led.h"

#include "beep.h"

#include "key.h"

#include "exti.h"

#include "wdg.h"

#include "timer.h"

#include "tpad.h"

#include "oled.h"

#include "lcd.h"

#include "usmart.h"

#include "rtc.h"

#include "wkup.h"

#include "adc.h"

#include "dac.h"

#include "dma.h"

#include "24cxx.h"

#include "flash.h"

#include "rs485.h"

#include "can.h"

#include "touch.h"

#include "remote.h"

#include "joypad.h"

const u8*JOYPAD_SYMBOL_TBL[8]= {"Right","Left","Down","Up","Start","Select","A","B"};//手柄按键符号定义int main(void)

{

u8 key;

u8 t=0,i=0;

Stm32_Clock_Init(9); //系统时钟设置

uart_init(72,9600); //串口初始化为9600

delay_init(72); //延时初始化

LED_Init(); //初始化与LED连接的硬件接口LCD_Init(); //初始化LCD

usmart_dev.init(72); //初始化USMART

JOYPAD_Init(); //手柄初始化

POINT_COLOR=RED;//设置字体为红色

LCD_ShowString(60,50,200,16,16,"WarShip STM32");

LCD_ShowString(60,70,200,16,16,"JOYPAD TEST");

LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");

LCD_ShowString(60,110,200,16,16,"2012/9/12");

LCD_ShowString(60,130,200,16,16,"KEYVAL:");

LCD_ShowString(60,150,200,16,16,"SYMBOL:");

POINT_COLOR=BLUE;//设置字体为红色

while(1)

{

key=JOYPAD_Read();

if(key!=0XFF)

{

LCD_ShowNum(116,130,key,3,16);//显示键值

for(i=0;i<8;i++)

{

if((key&(1<

{

LCD_Fill(60+56,150,60+56+48,150+16,WHITE);//清除之前的显示

LCD_ShowString(60+56,150,200,16,16,(u8*)JOYPAD_SYMBOL_TBL[i]);//显示符号

}

}

}

delay_ms(10);

t++;

if(t==20)

{

t=0;

LED0=!LED0;

}

}

}

基于STM32F103嵌入式实验指导书

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

2、将官方库STM32F10x_StdPeriph_Lib_V3.5.0.rar解压。 1)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的所有文件和STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下的所有文件都到第一步所创建的CMSIS文件夹中; 2)把STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目录下的文件(目录inc和scr)复制到第一步创建的LIB文件夹中; 3)把STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目录下的stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h三个文件复制到USER文件夹中。 3、打开MDK软件,新建一个工程Proj_GPIO保存到Proj_GPIO/USER中。CPU选择STM32F103ZE,如图2; 图2 4、新建一个空文档main.c保存到USER中,然后根 据绝对路径将文件对应添加到工程中,如右图。 5、配置工程属性,右键点击工程文件中的Target 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属性,加入工 程中包含头文件的目录;如右图

单片机STM32实验报告

实验报告 课程名称:单片微机原理与车载系统 学生姓名蒋昭立 班级电科1601 学号16401700119 指导教师易吉良 成绩 2018年12月17日

实验1 GPIO实验 1.1 实验目的 1)熟悉MDK开发环境; 2)掌握STM32单片机的GPIO使用方法。 1.2 实验设备 1)一台装有Keil和串口调试软件的计算机; 2)一套STM32F103开发板; 3)STlink硬件仿真器。 1.3基本实验内容 1)熟悉MDK开发环境,参考《STM32F1开发指南(精英版)-寄存器版本_V1.0》第3章,安装MDK 并新建test工程,运行例程,在串口窗宽观察结果,并记录如下: 从图片可以看出,例程运行成功,没有错误。 2)按键输入实验,《STM32F1开发指南(精英版)-寄存器版本_V1.0》第8章。实现功能:3 个按钮(KEY_UP、KEY0和KEY1),来控制板上的2 个LED(DS0 和DS1)和蜂鸣器,其中KEY_UP 控制蜂鸣器,按一次叫,再按一次停;KEY1 控制DS1,按一次亮,再按一次灭;KEY0 则同时控制DS0 和DS1,按一次,他们的状态就翻转一次。 理解连续按概念及其实现代码。参数mode 为0 的时候,KEY_Scan 函数将不支持连续按,扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不会再响应这个按键,这样的好处就是可以防止按一次多次触发,而坏处就是在需要长按的时候比较不合适。当mode 为1 的时候,KEY_Scan 函数将支持连续按,如果某个按键一直按下,则会一直返回这个按键的键值,这样可以方便的实现长按检测。 寄存器方法实现不支持连续按的关键代码,以及程序运行后的效果。

stm32跑马灯实验

详细了解,请点击https://www.sodocs.net/doc/e51201314.html,/ 跑马灯实验 跑马灯实验是最简单,也是一般最先开始的一个实验,他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的GPIO操作都是以跑马灯为基础进行的。 建议:当该实验顺利完成后,作为一个模板,供以后实验使用,最好把相关的某些代码封装起来,方便其他程序重用和其他功能调试时使用,这样可以确保您可以将精力花费在其他需要实现的功能上,而不是多次写下重复的代码。 实验目的: 1.分析和学习固件库 2.理解固件库的结构 3.通过stm32f10x_gpio.c/.h文件,熟悉GPIO的控制和工作原理 4.对开发板LED灯的再次软件封装 实验要求: 1.利用原理图和固件库的实例,移植开发板LED灯的驱动程序,即自己创建一个LED.c/.h 2.用两种方法实现跑马灯程序: 1.LED驱动 2.直接GPIO寄存器控制 硬件分析:

如上所示,4个LED链接在4个不同管脚上,即GPIOF6,GPIOF7,GPIOF8,GPIOC7. 当这4个管脚被置为低电平时,二极管导通。 通用输入输出接口(GPIO)介绍: 多达112多功能的双向IO口:80%的IO口利用率 所有的IO被分成7个端口,即7组GPIO口(GPIOA..GPIOG); 多达21路模拟输入; 可改变功能引脚(如:USARTx、TIMx、I2Cx、SPIx、CAN、USB等); 多达112个IO口可以设置为外部中断(同时可最多可有16个); 一个IO口可用于将MCU从待机模式唤醒(PA.0); 一个IO口可用作防入侵引脚(PC.13); 标准的I/O口可承受5V; IO口可以吸收25mA(总共可吸收150mA); 18MHz翻转速度; 可设置输出速度达到50MHz; 使用BSRR和BRR寄存器可对IO口的位进行位设置或清除; 锁定机制可以避免对IO口的寄存器的误写操作: 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。 除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。 在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 7组GPIO的端口映射地址为:

嵌入式系统原理实验三跑马灯

实验三跑马灯实验 实验目的: 通过一个经典的跑马灯程序,了解STM32F1 的IO 口作为输出使用的方法。通过代码控制ALIENTEK 战舰STM32 开发板上的两个LED:DS0 和DS1 交替闪烁,实现类似跑马灯的效果 内容要点: 1.硬件设计 本章用到的硬件只有LED(DS0 和DS1)。其电路在ALIENTEK 战舰STM32F103 开发板上默认是已经连接好了的。DS0 接PB5,DS1 接PE5。所以在硬件上不需 要动任何东西。其连接原理图如图: 2.软件设计 跑马灯实验我们主要用到的固件库文件是: stm32f10x_gpio.c /stm32f10x_gpio.h stm32f10x_rcc.c/stm32f10x_rcc.h misc.c/ misc.h stm32f10x_usart /stm32f10x_usart.h 其中stm32f10x_rcc.h 头文件在每个实验中都要引入,因为系统时钟配置函数以及 相关的外设时钟使能函数都在这个其源文件stm32f10x_rcc.c 中。 stm32f10x_usart.h 和misc.h 头文件在我们SYSTEM 文件夹中都需要使用到,所 以每个实验都会引用。 首先,找到之前新建的Template 工程,在该文件夹下面新建一个HARDWARE 的文件夹,用来存储以后与硬件相关的代码,然后在HARDWARE 文件夹下新 建一个LED 文件夹,用来存放与LED 相关的代码。新建led.h和led.c文件, 一个外设对应一个.h和.c文件。 在Manage Components 管理里面新建一个 HARDWARE 的组,并把led.c 加入到这个组里面, 将led.h 头文件的路径加入到工程里面 一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内 容重复引用,一般通过预编译的方式来写头文件。一般的格式如下:

(完整word版)STM32的485最简单例程

485最基本的半双工通信配置 采用STM32F103ZET6串口3连接485芯片通信口,485芯片的A,B通过485转串口模块与电脑相连,完成在串口软件上输入输出功能。 串口3,配置函数: void USART3_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); // USART3_TX -> PB10 , USART3_RX ->PB11 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); USART_https://www.sodocs.net/doc/e51201314.html,ART_BaudRate = 115200; // 1200; USART_https://www.sodocs.net/doc/e51201314.html,ART_WordLength = USART_WordLength_8b; USART_https://www.sodocs.net/doc/e51201314.html,ART_StopBits = USART_StopBits_1; USART_https://www.sodocs.net/doc/e51201314.html,ART_Parity = USART_Parity_No; //USART_Parity_Even; USART_https://www.sodocs.net/doc/e51201314.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_https://www.sodocs.net/doc/e51201314.html,ART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef PDU_USART3_DMA

RS-485总线收发实验要点

RS-485总线收发实验 在本章节,我们将介绍RS-485总线的使用。本实验一共需要两块神舟IV号STM32开发板,一块作为RS485的发送端,另一块作为RS485的接收端,接收总线上的数据。本节分为 如下几个部分: 1 RS-485总线实验的意义与作用 2实验原理 3软件设计 4硬件设计 5下载与验证 6实验现象 意义与作用 前面两个例程,我们分别讲解了串口printf实验和串口中断收发实验,对RS232串口原理及其应用有了一定的了解,但是由于RS232接口标准出现较早,难免有不足之处,主要有以 下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。 (2)传输速率较低,在异步传输时,波特率为20Kbps。 (3)接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。 (4)传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。 针对RS232接口的不足,于是就不断出现了一些新的接口标准,RS-485就是其中之一, 它具有以下特点: (1)RS-485的电气特性:逻辑"1"以两线间的电压差为+(2—6)V表示;逻辑"0"以两线间的电压差为-(2—6)V表示。接口信号电平比RS-232降低了,就不易损坏接口电 路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。 (2)RS-485的数据最高传输速率为10Mbps(实际取决于RS485接口芯片和电路)。(3)RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。 (4)RS-485接口的最大传输距离标准值为4000英尺,实际上可达3000米,另外RS-232接口在总线上只允许连接1个收发器,即单站能力。而RS-485接口在总线上是允许连 接多达128个收发器。即具有多站能力,这样用户可以利用单一的RS-485接口方便地 建立起设备网络。 (5)因为RS485接口组成的半双工网络,一般只需二根连线(我们一般叫AB线),所以RS485接口均采用屏蔽双绞线传输。 基于以上原因,RS485总线在工业控制行业应用非常广泛,适合分散的,远距离(上千米)的多点通信,这是RS232所不能实现的,因此,通过使用STM32开发板实现RS485的通信,我们可以了解RS485总线的应用和基本原理,搭建RS485通信网络。 实验原理 RS-485总线简介

STM32跑马灯实验

3.1 跑马灯实验 通过本节的学习,你将了解到STM32的IO口作为输出使用的方法。本节分为如下几个小节: STM32 IO口简介 3.1.1 硬件设计 3.1.2 软件设计 3.1.3 仿真与下载 3.1.4

3.1.1 STM32 IO简介 作为所有开发板的经典入门实验,莫过于跑马灯了。ALIENTEK MiniSTM32开发板板载了2个LED,DS0和DS1,本实验将通过教你如何控制这两个灯实现交替闪烁的类跑马灯效果。 该实验的关键在于如何控制STM32的IO口输出。了解了STM32的IO口如何输出的,就可以实现跑马灯了。通过这一节的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。 STM32的IO口可以由软件配置成8种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能 每个IO口可以自由编程,单IO口寄存器必须要按32位字被访问。STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level标FT的就是5V电平兼容的)。 STM32的每个IO端口都有7个寄存器来控制。他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的所存寄存器LCKR;这里我们仅介绍常用的几个寄存器,我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。 CRL和CRH控制着每个IO口的模式及输出速率。 STM32的IO口位配置表如表3.1.1.1所示: 表3.1.1.1 STM32的IO口位配置表 STM32输出模式配置如表3.1.1.2所示:

第25讲 485通信实验

7.1RS-485总线收发实验 7.1.1485简介 485(一般称作RS485/EIA-485)是隶属于OSI(OSI:开放系统互连基本参考模型。开放,是指非垄断的。系统是指现实的系统中与互联有关的各部分。)模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。 RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A 标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。 RS485的特点包括: 1)接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V 表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。 2)传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,传输速度可达100Kbps。 3)抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。 4)传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。 7.1.2RS485的通信概念 RS-485 是一个电气接口规范它只规定了平衡驱动器和接收器的电特性而没有规定接 插件传输电缆和通信协议。 RS-485建议性标准作为一种多点差分数据传输的电气规范,现已成为业界应用最为广泛的标准通信接口之一,这种通信接口允许在简单的一对双绞线上进行多点双向通信,它所具有的噪声抑制能力、数据传输速率、电缆长度及可靠性是其他标准无法比拟的,因此许多不同领域都采用RS-485作为数据传输链路,它是一种极为经济并具有相当高的噪声抑制、传输速率、传输距离和宽共模范围的通信平台。 RS-485是一种在工业上作为数据交换的手段而广泛使用的串行通信方式,数据信号采用差分传输方式,也称作平衡传输,因此具有较强的抗干扰能力。它使用一对双绞线,将其中一线定义为A,另一线定义为B。如下图所示:

LED跑马灯实验-库函数

LED跑马灯实验

修改记录 审核记录

LED跑马灯 1.1 实验介绍 GPIO即通用可编程输入输出口,在此我们通过GPIO编程实现一个跑马灯的实验。该跑马灯实验是最简单,也是一般最先开始的一个实验,它可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的 GPIO 操作都是以跑马灯为基础进行的。 1.2 实验目标 1. 理解固件库的结构 2. 分析和学习固件库 3. 灵活运用 GPIO 1.3 实验时间 60分钟 1.4 预备知识 熟悉C语言知识,熟练MDK的使用 1.5 实验步骤 1.解压stm32f10x_stdperiph_lib.zip可以从ST官方网站免费下载。本教程使用的标准库版本为 3.1.2 2.创建一个GPIO文件夹

2.1 新建子文件夹User,用于存放用户源程序 2.2 新建子文件夹Project,用户KEIL工程文件 2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。 3. 复制源代码到GPIO文件夹 3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2\Libraries文件夹和Utilities文件夹整体复制到GPIO文件夹下。这就是ST的标准库,是以源代码形式提供的。 3.2 将库中的演示代码\GPIO\labsolutions\4GPIO_fuction\User中的文件复制到GPIO\User 文件夹. 4. 新建Keil MDK工程

智嵌 STM32F407开发板基本型V1.0实验例程操作手册

北京智嵌物联网电子技术有限公司 I 智嵌 STM32F407开发板基本型V1.0实验例程操作手册 版本号:A 拟制人:赵工 时 间 :2014年12月27日

目录 1本文档编写目的 (1) 2实验例程操作说明 (1) 2.1LED闪烁实验 (1) 2.2KEY_LED实验 (1) 2.3RS232通讯实验 (1) 2.4RS485通讯实验 (2) 2.5CAN1通讯实验 (3) 2.6I2C实验—读写24c04 (3) 2.7SPI通讯实验--读写SST25016B (5) 2.8CPU温度测量实验 (5) 2.9CRC实验 (5) 2.10DAC例程实验 (6) 2.11DS18B20温度测量实验 (6) 2.12EXIT例程实验 (6) 2.13RNG随机数发生器例程实验 (7) 2.14RTC时钟例程实验 (7) 2.15独立看门狗例程实验 (8) 2.1616通道ADC采集实验 (9) 2.17U盘读写实验 (10) 2.18SD卡FatFS文件系统实验 (11) 2.19USB数据存储实验-PC机通过USB读写SD卡实验 (13) 2.20基于OLED的RFID_RC522读写IC卡实验 (14) 2.21OLED显示实验 (16) 2.22TCP服务器收发数据实验 (16) 2.23动态IP实验 (18) 2.24HTTP网页服务器实验 (20) 2.25 2.4G无线模块NRF24l01通信实验 (22) 2.26SNTP协议实验_网络授时_RTC实验 (22) 2.27UDP客户端发送数据实验 (26) 2.28UDP服务器收发数据实验 (27) 2.29TCP客户端收发数据实验 (29) 2.30HTTP网页拍照例程 (32) 2.31其他实验例程 (33)

stm32实验485实验

#include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "beep.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timer.h" #include "tpad.h" #include "oled.h" #include "lcd.h" #include "usmart.h" #include "rtc.h" #include "wkup.h" #include "adc.h" #include "dac.h" #include "dma.h" #include "24cxx.h" #include "flash.h" #include "rs485.h" int main(void) { u8 key; u8 i=0,t=0; u8 cnt=0; u8 rs485buf[5]; Stm32_Clock_Init(9); //系统时钟设置 uart_init(72,9600); //串口初始化为9600 delay_init(72); //延时初始化 LED_Init(); //初始化与LED连接的硬件接口 LCD_Init(); //初始化LCD usmart_dev.init(72); //初始化USMART KEY_Init(); //按键初始化 RS485_Init(36,9600); //初始化RS485 POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,200,16,16,"WarShip STM32"); LCD_ShowString(60,70,200,16,16,"RS485 TEST"); LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(60,110,200,16,16,"2012/9/9"); LCD_ShowString(60,130,200,16,16,"KEY0:Send"); //显示提示信息

STM32实验-GPIO输出-流水灯实验报告

3. 实验环境 WindouwslO Keil uVision5 课程实验报告 学院: ___________________ 专业: ______________ 2018年10月18日

4. 实验方法和步骤(含设计) 上。 (1 )实验硬件连接图 四个led灯如图连接到GPIO的6~9引脚(2)软件分析 使用到的GPIO端口需配置为输出模式,推挽(PP)模式输出,I0 口速度为50MHz (3 )实验步骤 ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。 ②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。 ③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。 (4)原函数 1 itinclude "led.h" 2 B/* 3 ( 1 )紺始牝GF IOC 的口 4 (2)定义延时蓟数 s — 6 void LEDInit(void) 7 0( 8 GPIOInitTypeDef GPIOInitStructurp; 9 RCC_APB2PeriphC 1 ockCmd(RCC_APB2P e riph_GPIOC, EWWLEJi 使隘P匚正时禅IS GPI0_ln 1 tStrut t urt.GFI0_Pin - GPI0_Pin_&\GPI0_Pin_7^GPI0_Pin_fl[GP 10_Pin_9; "PC飞濟口配匡 11 GPIOIni 稚冃辎出 12 GP Z0 I nitstrueture. GPIC^Speed - GPIO_Speed_56*Xz; //IO □谨复为50rKz

STM32 带can通讯 485 串口 232串口通讯 中文件资料 最小系统说明书

深圳轩微胜电子科技 STM32全功能工控板 最小系统板 https://www.sodocs.net/doc/e51201314.html,/ STM32F103C8T6最小系统带CAN 485 232 说明书 目 录: 1、全功能STM32工控系统板最小系统板功能介绍 2、全功能STM32工控系统板最小系统板原理图解析 3、全功能STM32工控系统板最小系统板配套资料 4、can 程序设计源代码 和485程序设计源代码 5、总结 6、公司信息

一、全功能STM32工控系统板介绍: STM32最小系统板主要协助广大工程师与学生在产品调试、新产品开发,样机测试,参加大赛、毕业设计等领域的应用和开发,全功能STM32 工控系统板最小系统板的主要特点有: 1、全功能通信系统:集成CAN通讯,485通讯,232串口通讯 于一身,方便各种通信的切换使用。 2、标准下载口:国际标准的Jlink下载口,同时兼容通信程 序下载,便捷可靠。 3、宽电源接口:适应工控需求的电源,无论在什么系统上应 用,系统自动识别电源进行调整,不需要外接电源,方便应用。 4、工业应用级布线,采用多层板设计,公共电源和地完全隔 离,加大了过载能力,抗干扰能力强。 5、体积小,方便安装应用 6、跳帽设计,方便多重状态组合 深圳轩微胜电子科技STM32全功能工控板最小系统板https://www.sodocs.net/doc/e51201314.html,/

图一:功能原理图 https://www.sodocs.net/doc/e51201314.html,/item.htm?spm=a1z10.1-c.w4004-9605616956.6.v1FXtM&id=43719925208二、全功能STM32工控系统板原理图解析: 2.1按键与LED电路: 深圳轩微胜电子科技STM32全功能工控板最小系统板https://www.sodocs.net/doc/e51201314.html,/

stm32实验CAN收发实验

#include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "beep.h" #include "key.h" #include "exti.h" #include "wdg.h" #include "timer.h" #include "tpad.h" #include "oled.h" #include "lcd.h" #include "usmart.h" #include "rtc.h" #include "wkup.h" #include "adc.h" #include "dac.h" #include "dma.h" #include "24cxx.h" #include "flash.h" #include "rs485.h"

#include "can.h" int main(void){u8 key; u8 i=0,t=0; u8 canbuf[8]; u8 res; 息u8 mode=1;//CAN工作模式;0,普通模式;1,环回模式 Stm32_Clock_Init (9); //系统时钟设置 uart_init(72,9600); delay_init (72); LED_Init(); LCD_Init();//串口初始化为9600 //xx初始化 //初始化与LED连接的硬件接口//初始化LCD usmart_dev.init (72);//初始化USMART KEY_Init();//按键初始化 CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(60,50,200,16,16,"WarShip STM32");

单片机跑马灯实验报告

学号14142200277序号19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间2016年4月2日

一、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。 2、简单键控的流水灯。 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。 3、键控的流水灯。 上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 二、电路原理图 图1 跑马灯实验电路原理图

三、程序流程图 图2 简单键控的流水灯程序流程图 四、源程序 1、基本的流水灯 #include #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; { data uint i; while(j--) for(i=0;i<250;i++); } void main( ) //主函数 { data uchar a; a=1; //保证只有一个点亮

while(1) //不断循环 { P2=~a; //低电平点亮 a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0 delay(2250);} //流动点亮延时 } 2、简单键控的流水灯 #include #define uchar unsigned char #define uint unsigned int void delay(uint i) { uchar t; while(i--) { for(t=0;t<120;t++); } } void main() { data uchar a; a=1; while(P2==0xff) { P0=~a; a=a<<1; if(a==0) a=1; delay(250); } while(P2==0xfe) { P0=~a;

stm32串口间通信实验

STM32串口间通信 该工程主要实现了两块实验板之间的通信以及接收实验板和PC间的通信,通过发送实验板串口1发送数据,然后由接受实验板串口3接收数据后再又串口1发送出去通过PC查看实验效果。 发送串口及子函数配置: #include "sys.h" #include "usart.h" ////////////////////////////////////////////////////////////////////////////////// char USART_TX_BUF[12]={"0123456789\r\n"}; //发送缓冲 void uart_init(u32 bound) { //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; //NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC _APB2Periph_AFIO, ENABLE); //USART1_TX PA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); //USART1_RX PA.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOA TING; GPIO_Init(GPIOA, &GPIO_InitStructure); //Usart1 NVIC 配置 //NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; // //NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道使能//NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1 //USART 初始化设置 USART_https://www.sodocs.net/doc/e51201314.html,ART_BaudRate = bound;//一般设置为9600; USART_https://www.sodocs.net/doc/e51201314.html,ART_WordLength = USART_WordLength_8b;

stm32实验程序代码

实验1 GPIO #include "" #include "" * Input : None * Output : None * Return : None ******************************************************************************* / int main(void) { /* Configure the system clocks */ * Input : None * Output : None * Return : None ******************************************************************************* / void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure;

/* Configure one bit for preemption priority */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* Enable the EXTI9_5 Interrupt */ * Input : None * Output : None * Return : None ******************************************************************************* / void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOA, GPIOF and AFIO clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOF | RCC_APB2Periph_AFIO, ENABLE); /* Configure PF. as Output push-pull */ = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GP

STM32汇编语言 跑马灯

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;STM32 LED单向跑马灯实验 ;;8个LED接在PE口(PE[0..7]) ;;2011-5-3 by 追梦;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BIT6 EQU 0X00000040 GPIOE EQU 0X40011800 ;GPIOE 地址 GPIOE_CRL EQU 0X40011800 ;低配置寄存器 GPIOE_CRH EQU 0X40011804 ;高配置寄存器 GPIOE_ODR EQU 0X4001180C ;输出,偏移地址0Ch GPIOE_BSRR EQU 0X40011810 ;低置位,高清除偏移地址10h GPIOE_BRR EQU 0X40011814 ;清除,偏移地址14h IOPEEN EQU BIT6 ;GPIOE使能位 RCC_APB2ENR EQU 0X40021018 STACK_TOP EQU 0X20002000 AREA RESET,CODE,READONLY DCD STACK_TOP ;MSP主堆栈指针 DCD START ;复位,PC初始值 ENTRY;指示开始执行 START LDR R1,=RCC_APB2ENR LDR R0,[R1] ;读 LDR R2,=IOPEEN ORR R0,R2 ;改 STR R0,[R1] ;写,使能GPIOE时钟 ;PE[0..7] 8个引脚均设置成推挽式输出 LDR R0,=0x33333333 LDR R1,=GPIOE_CRL STR R0,[R1] LDR R1,=GPIOE_ODR LDR R0,=0X7F ;初始时最高位点亮 LOOP STR R0,[R1] PUSH {R0} MOV R0,#300 BL.W DELAY_NMS ;延时300ms POP {R0} BL.W ByteRor1 ;状态位右循环移一位 B LOOP

第二十九章战舰STM32开发板485实验

第二十九章485 实验 本章我们将向大家介绍如何利用STM32的串口实现485通信(半双工)。在本章中,我们将利用STM32的串口2来实现两块开发板之间的485通信,并将结果显示在TFTLCD模块上。本章分为如下几个部分: 29.1 485 简介 29.2 硬件设计 29.3 软件设计 29.4 下载验证

29.1 485 简介 485(一般称作RS485/EIA-485)是隶属于OSI模型物理层的电气特性规定为2线,半双工,多点通信的标准。它的电气特性和RS-232大不一样。用缆线两端的电压差值来表示传递信号。RS485仅仅规定了接受端和发送端的电气特性。它没有规定或推荐任何数据协议。 RS485的特点包括: 1)接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V 表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了, 不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。 2)传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,传输速度可达100Kbps。 3)抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。 4)传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。 RS485推荐使用在点对点网络中,线型,总线型,不能是星型,环型网络。理想情况下RS485需要2个匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般为120Ω)。没有特性阻抗的话,当所有的设备都静止或者没有能量的时候就会产生噪声,而且线移需要双端的电压差。没有终接电阻的话,会使得较快速的发送端产生多个数据信号的边缘,导致数据传输出错。485推荐的连接方式如图29.1.2所示: 图29.1.2 RS485连接 在上面的连接中,如果需要添加匹配电阻,我们一般在总线的起止端加入,也就是主机和设备4上面各加一个120Ω的匹配电阻。 由于RS485具有传输距离远、传输速度快、支持节点多和抗干扰能力更强等特点,所以RS485有很广泛的应用。 战舰STM32开发板采用SP3485作为收发器,该芯片支持3.3V供电,最大传输速度可达10Mbps,支持多达32个节点,并且有输出短路保护。该芯片的框图如图29.1.2所示: 图29.1.2 SP3485框图 图中A、B总线接口,用于连接485总线。RO是接收输出端,DI是发送数据收入端,RE 是接收使能信号(低电平有效),DE是发送使能信号(高电平有效)。

相关主题