精华内容
下载资源
问答
  • 基于正点原子STM32F103ZET6精英板(战舰板)的贪吃蛇小游戏(附源码)
    千次阅读
    2020-12-25 11:42:43

    基于正点原子STM32F103ZET6精英板(战舰板)的贪吃蛇小游戏

    简介:这个贪吃蛇小游戏是我嵌入式实训自选的课题设计,本人也是初学,所以做出来的东西也不算复杂,话不多说,先看看成品(由于放不进去视频,所以放的截图)

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述所以,本设计大概实现了传统贪吃蛇游戏的功能:
    1、用的显示屏是精英板自带的4.3寸(480800)LCD屏,所以为了维持正方形,分成8048等分;
    2、预设小蛇初始长度、速度、方向,以及小蛇的长度上限值;
    3、每吃到食物小蛇长度+1,每吃到两个食物小蛇速度+1;
    4、当小蛇头部坐标与屏幕边界或自身重合则死亡,或者长度达到上限则游戏结束。
    游戏规则可以根据个人喜好进行更改。

    主函数部分代码

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "stdio.h"
    #include "stdlib.h"
    #include "math.h"
    #include "beep.h"
    //内部驱动
    #include "rand.h"
    //外围电路
    #include "led.h"
    #include "key.h"
    #include "lcd_4_3.h"
    //用户算法
    #include "my_task.h"
    
    #define GAME_WIDTH	480	//设置屏幕分辨率为800*480,为了维持正方形,分成80*48等分
    #define GAME_HEIGHT	800
    #define GAME_XPART  48
    #define GAME_YPART  80
    
    enum sta //枚举状态
    { 
    	OFF,//0
    	ON	//1
    } station;
    
    enum dir //枚举贪吃蛇方向
    {
    	UP,		//上
    	DOWN,	//下
    	LEFT,	//左
    	RIGHT	//右
    }direction;
    
    typedef struct  //贪吃蛇重要参数集
    {										    
    	u16 speed;		//速度
    	u16 length;     //长度
    	u16 energybuf;  //能量缓存
    	u16 width;      //蛇宽	
    	u16 life;       //生命数	
    	u16 firstx;     //蛇头坐标x
    	u16 firsty;     //蛇头坐标y
    	u16 lastx;      //蛇尾坐标x
    	u16 lasty;      //蛇尾坐标y
    	u16 color;      //蛇颜色	
    }snakes; 
    snakes snake;//此时snake符合snakes结构体中得所有参数
    
    void Snake_Init(snakes * snake)//贪吃蛇参数初始化
    {
    	snake->speed=5;
    	snake->length=10;
    	snake->energybuf=0;
    	snake->width=1;
    	snake->life=3;
    	snake->firstx=4;
    	snake->firsty=5;
    	snake->lastx=0;
    	snake->lasty=0;
    	snake->color=BLUE;
    }
    
    typedef struct  //食物重要参数集
    {										    
    	u16  energy ;//食物能量
    	u16  x ;	//食物坐标x
    	u16  y ;	//食物坐标y
    }apples; 
    apples apple;
    
    void Apple_Init(apples * apple)//食物参数初始化
    {
    	apple->energy=1;
    //	apple->x=24;	//坐标由随机数计算出来
    //	apple->y=40;
    }
    
    typedef struct  //事件重要参数集
    {										    
    	u16  Process ;//是否游戏暂停
    	u16  GameSta ;//是否游戏结束
    	u16  AppleSta;//食物状态 
    	u16  Direction;//蛇前进方向
    }events; 
    events event;
    
    void Event_Init(events * event)//事件参数初始化
    {
    	event->Process=ON;//没有暂停
    	event->GameSta=ON;//没有结束
    	event->AppleSta=ON;
    	event->Direction=DOWN;//初始方向向下
    }
    typedef struct  //贪吃蛇坐标参数
    {
    	u16 x;
    	u16 y;
    }axiss;
    axiss snake_axis[100];  //设蛇身最大长度可以达到100
    
    void Display(u16 x,u16 y,u16 color)//按照80*48的坐标映射到800*480的屏幕上
    {
    	LCD_Fill(GAME_WIDTH/GAME_XPART*x,GAME_HEIGHT/GAME_YPART*y,GAME_WIDTH/GAME_XPART*(x+1),GAME_HEIGHT/GAME_YPART*(y+1),color);
    }
    
    void DisplayInit(void) //蛇身初始化,默认在该位置,并蛇头向下
    {
    	u16 i;
    	for(i=0;i<5;i++)//将初始坐标存入蛇身坐标内
    	{
    		snake_axis[i].x=i;
    		snake_axis[i].y=0;
    	}
    		for(i=5;i<10;i++)
    	{
    		snake_axis[i].x=4;
    		snake_axis[i].y=i-4;
    	}
    	LCD_Clear(WHITE);
    	for(i=0;i<10;i++)
    	{
    		Display(snake_axis[i].x,snake_axis[i].y,BLUE);//按照初始坐标打印出蛇身
    	}
    }
    
    void GameOver(void)//游戏结束函数,打印"GAME OVER",蜂鸣器响,挂起核心数据处理函数
    {
    	
    	LCD_ShowString(180,388,200,24,24,"GAME OVER !"); 
      BEEP=1;  
    	delay_ms(500);
    	BEEP=0;
    	vTaskSuspend(EVENTTask_Handler);//挂起事件任务函数,核心数据处理函数event_task
    }
    

    源码:https://download.csdn.net/download/mj19981206/13719253

    更多相关内容
  • 精英STM32F103开发板V3读取dht11传感器的温湿度,并在液晶屏显示
  • RT-Thread基于-正点原子-战舰-精英F103开发板例程
  • ALIENTEK战舰STM32F103,资源十分丰富,并把STM32F103的内部资源发挥到了极致,基本所有STM32F103的内部资源,都可以在此开发板上验证,同时扩充丰富的接口和功能模块,整个开发板显得十分大气。 板载资源如下所示...
  • stm32正点原子精英版简易示波器.rar
  • 亲测在战舰版、精英版、Mini版的正点原子上使用,使LCD1602达到可以和LCD屏一样,可以在任意有效坐标显示字。 文件列表:LCD(LCD1602A)原理图及说明书;基于C51芯片的LCD模块(LCD1602A)源码;基于STM32F103RCT6...
  • STM32 PWM工作过程 STM32 PWM工作过程 STM32 PWM工作过程(通道1为例) CCR1:捕获比较(值)寄存器(x=1,2,3,4):设置比较值。 CCMR1: OC1M[2:0]位: 对于PWM方式下,用于设置PWM模式1【110】或者PWM模式...

    STM32 PWM工作过程

    STM32 PWM工作过程 

     STM32 PWM工作过程(通道1为例)

    CCR1:捕获比较()寄存器(x=1,2,3,4):设置比较值。

    CCMR1: OC1M[2:0]位:

                  对于PWM方式下,用于设置PWM模式1【110】或者PWM模式2【111】

    CCER:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。

    CCER:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。

    PWM模式1 & PWM模式2

    寄存器TIMx_CCMR1OC1M[2:0]位来分析:

     STM32 PWM工作过程

    void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

    void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

    自动重载的预装载寄存器

     void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

    简单的说,ARPE=1,ARR立即生效。。。APRE=0,ARR下个比较周期生效。

    STM32 定时器3输出通道引脚

     PWM输出库函数

    void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

    typedef struct
    {
      uint16_t TIM_OCMode;  //PWM模式1或者模式2
      uint16_t TIM_OutputState; //输出使能 OR失能
      uint16_t TIM_OutputNState;
      uint16_t TIM_Pulse; //比较值,写CCRx
      uint16_t TIM_OCPolarity; //比较输出极性
      uint16_t TIM_OCNPolarity; 
      uint16_t TIM_OCIdleState;  
      uint16_t TIM_OCNIdleState; 
    } TIM_OCInitTypeDef;
    
    
    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //PWM模式2
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    TIM_OCInitStructure. TIM_Pulse=100;
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
    TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2
    

    设置比较值函数:

    void TIM_SetCompareX(TIM_TypeDef* TIMx, uint16_t Compare2);

    使能输出比较预装载:

    void TIM_OC2PreloadConfig( TIM_TypeDef * TIMx , uint16_t TIM_OCPreload );

    使能自动重装载的预装载寄存器允许位: 

    void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);

    实验要求 

    使用定时器3PWM功能,输出占空比可变的PWM波,用来驱动LED灯,从而达到LED【PB5]亮度由暗变亮,又从亮变暗,如此循环。 

    PWM输出配置步骤:

    LED挂在PB5下面,而 PB5用到的是TIM3的通道2,因此选用定时器3

    使能定时器 3 和相关 IO 口时钟。

             使能定时器3时钟:RCC_APB1PeriphClockCmd();

             使能GPIOB时钟:RCC_APB2PeriphClockCmd();

    ②     初始化IO口为复用功能输出。函数:GPIO_Init();

            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;      

    这里我们是要把PB5用作定时器的PWM输出引脚,所以要重映射配置,

           所以需要开启AFIO时钟。同时设置重映射。

            RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

            GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);

    ④    初始化定时器:ARR,PSC等:TIM_TimeBaseInit();

    ⑤    初始化输出比较参数:TIM_OC2Init();

    ⑥   使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);

    ⑦   使能定时器。TIM_Cmd();

    ⑧   不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2();

    timer.c

    void TIM3_PWM_Init(u16 arr,u16 psc)
    {
      GPIO_InitTypeDef  GPIO_InitStructure;
    	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    	TIM_OCInitTypeDef TIM_OCInitStructure;
    	
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定时器3时钟
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);//使能GPIO和AFIO复用功能时钟
    	GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE); //重映射TM3_CH2->PB5
    	
    	
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED0-->PB.5 端口配置
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; 		 //复用推挽输出
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
      GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.5
    
    	
    	TIM_TimeBaseStructure.TIM_Period=arr;
    	TIM_TimeBaseStructure.TIM_Prescaler=psc;
    	TIM_TimeBaseStructure.TIM_ClockDivision=0;
    	TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //
    	TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //初始化TIM3
    	
    	TIM_OCInitStructure.TIM_OCMode =TIM_OCMode_PWM2;
    	TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
    	TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出极性高
    	TIM_OC2Init(TIM3,&TIM_OCInitStructure);  //初始化外设TIM3_OC2
    	
    	TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
    	TIM_Cmd(TIM3,ENABLE);  //使能TIM3
    	
    }

    main.c

     int main(void)
     {		
     	u16 led0pwmval=0;
    	u8 dir=1;	
    	delay_init();	    	 //延时函数初始化	  
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    	uart_init(115200);	 //串口初始化为115200
     	LED_Init();			     //LED端口初始化
     	TIM3_PWM_Init(899,0);	 //不分频。PWM频率=72000000/900=80Khz
       	while(1)
    	{
     		delay_ms(10);	 
    		if(dir)led0pwmval++;
    		else led0pwmval--;
    
     		if(led0pwmval>300)dir=0;
    		if(led0pwmval==0)dir=1;										 
    		TIM_SetCompare2(TIM3,led0pwmval);		   
    	}	 
     }
    

    展开全文
  • 基于STM32F103ZET6芯片的超声波模块(HC-SR04)源码。亲测在战舰版、精英版的正点原子上使用,将PE4于Trig相连,将PE6于Echo相连。
  • ESP8266获取网络天气,通过精英版搭载8266网络芯片实现联网并在LC屏上显示
  • stm32F103zexx(战舰v1) 移植liteOS

    千次阅读 2020-05-16 11:31:45
    由于之前接触底层较多因此就想自己移植一个liteos 以及touchgfx到自己的stm32开发板上,刚好自己也有个开发板,开发板是stm32f103zet6这款是大二买的买了就凉着了,是战舰的v1版本; 目的:想通过这个过程,让自己更...

    刚换了工作,最近接触了一个项目,使用的是stm32低功耗系列,系统是华为的物联网 liteOS操作系统,框架为touchGFX ui框架;

    由于之前接触底层较多因此就想自己移植一个liteos 以及touchgfx到自己的stm32开发板上,刚好自己也有个开发板,开发板是stm32f103zet6这款是大二买的买了就凉着了,是战舰的v1版本;

    目的:想通过这个过程,让自己更深刻的理解项目的架构,底层与上层,以及底层代码的组织结构,操作系统的代码组织结构,底层代码如何和系统交互,底层如何跟框架衔接,如何跟liteos衔接等等;

    从零开始首先建立裸机的工程,使用st公司的软件,不得不说这个软件太强大了,强大到你用了之后你感觉自己成了一个废人(自己做的事情太少),stm32CubeMX直接生成工程,这里不多做介绍,

    一,stm32 基于hal库的裸机工程,移植liteos;

    这里发现了华为liteos官网有很详细的介绍,觉得完全没必要重写,因此可以直接参考官网;

    包括裸机工程的建立和liteos的移植;

    https://support.huaweicloud.com/bestpractice-LiteOS/zh-cn_topic_0145350106.html

    使用stm32CubeMX可以建立基于hal的裸机工程,这里常用的简单分为两种,keil和iar ,我这里使用iar工程;

    遇到的问题:

    1,串口通信出现乱码;

    这个问题浪费了我三四天时间,串口在移植完,重定向之后,操作系统的打印信息会从这个串口输出,所以相当重要,由于我的开发板比较老,当串口出现乱码的时候总以为晶振配置的有问题,然后看原理图和开发板,发现外部晶振是12m,而stm32CubeMX上外部晶振为8M,再上百度修改库文件 里的晶振;总之试了好几天一直都是乱码,最后发现是吧串口搞错了,根本晶振什么的完全不用改,就按上面链接里的来设置串口和led都是ok的;一定要搞清楚哪个串口是你用的(是的,这是比较低级的错误),也就是你设置的串口到底对应物理串口是哪个,这里我一直以为是com3,其实是com4;

     

    2 一个需要额外设置的是stjlink调试(这里的额外是相对于华为官网的指导来说),如果不设置这个,在使用stjlink调试的时候会遇到问题导致不能调试;

    3.第二个需要额外设置的用来支持串口的接收数据(中断模式),需要打开串口中断使能;

    搭建裸机工程之后,编写了led和串口的中断收发测试程序功能已验证,供大家参考;

    led这里的led为PB5,也可以自己加PE5

          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_SET );
          HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
          HAL_UART_Transmit(&huart1, tData, sizeof(tData), 1000);      
          HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
          HAL_Delay(500);

    串口的中断收发例程,库函数太完备,我们能做的事情太少;

    只需要在主函数中打开uart1的接收中断,并重写中断回调函数;

    main函数中加入下面一行;

    HAL_UART_Receive_IT(&huart1, rData, 1);

    重写中断回调函数,这里不是c++中的重载,HAL_UART_RxCpltCallback 这个函数在库中已经存在,只是被定义为弱符号,__weak,我们在main中重写,编译器链接运行将使用我们写的函数;

    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    {
    	/* 接收一个字节数据直接发出去 */
    	HAL_UART_Transmit(&huart1, rData, 1, 1000);	
    	/* 每次需要重新初始化接收结构体指针 */
    	HAL_UART_Receive_IT(&huart1, rData, 1);
    }

    这样两个测试例程都已经正常运行了

    这时候裸机工程验证完毕;

    ,紧接着一步将printf重定向到串口1上,这一步很重要,因为当移植玩操作系统之后,操作系统的启动信息都是使用标准库中的printf打印到串口上,而printf是用putchar实现的;

    由于我们只需要输出消息也就是将操作系统的信息使用printf打印出来而不需要使用scanf获取输入,基于上面串口的功能,只重定向fputc

    添加uart.h ,uart.c文件如下:

    #ifndef __UART_H__
    #define __UART_H__
    #include "stdio.h"
    #include "stdint.h"
    
    
    int fputc(int ch, FILE *f);
    
    #endif
    #include "uart.h"
    #include "stdio.h"
    #include "stm32f1xx_hal.h"
    extern UART_HandleTypeDef huart1;
    
    ///重定向c库函数printf到USART1
    int fputc(int ch, FILE *f)
    {
        uint8_t p = ((uint8_t)ch);
        /* 发送一个字节数据到USART1 */
        HAL_UART_Transmit(&huart1,&p,1, 1000);
        return (p);
    }
    

    此函数会覆盖标准库中的fputc;

    验证遇到的问题;使用Hal_DELAY()函数后遇到死循环;

    需要调用HAL_IncTick()函数,代码见附件

    void SysTick_Handler(void)
    {
        if (g_bSysTickStart)
        {
            osTickHandler();
        }
        else
        {
            g_ullTickCount++;
        }
        HAL_IncTick();
    }
    

    三,最后是liteos的移植,移植过程见最上面的链接;

    操作系统liteOS的主要模块包括:

    任务

    提供任务的创建、删除、延迟、挂起、恢复等功能,以及锁定和解锁任务调度。支持任务按优先级高低的抢占调度及同优先级时间片轮转调度。

    任务同步

    • 信号量:支持信号量的创建、删除、申请和释放等功能。
    • 互斥锁:支持互斥锁的创建、删除、申请和释放等功能。

    硬件相关

    提供中断、定时器等功能。

    • 中断:提供中断的创建、删除、使能、禁止、请求位的清除等功能。
    • 定时器:提供定时器的创建、删除、启动、停止等功能。

    IPC通信

    提供事件、消息队列功能。

    • 事件:支持读事件和写事件功能。
    • 消息队列:支持消息队列的创建、删除、发送和接收功能。

    时间管理

    • 系统时间:系统时间是由定时/计数器产生的输出脉冲触发中断而产生的。
    • Tick时间:Tick是操作系统调度的基本时间单位,对应的时长由系统主频及每秒Tick数决定,由用户配置。
    • 软件定时器:以Tick为单位的定时器功能,软件定时器的超时处理函数在系统创建的Tick软中断中被调用。

    内存管理

    • 提供静态内存和动态内存两种算法,支持内存申请、释放。目前支持的内存管理算法有固定大小的BOX算法、动态申请SLAB、DLINK算法。
    • 提供内存统计、内存越界检测功能。

    以上是liteos系统的主要职能,可以发现不像linux操作系统,linux内核中包含的全量的驱动程序,这也是liteos能这么小的原因,因此串口重定向的任务才需要在裸机的时候完成,使用的就是hal的抽象层接口;

    操作系统移植完成之后烧录,启动串口打印如下:

    到此,liteos就在开发板中正常运行了...

    工程代码见附件!

    展开全文
  • MCU采用STM32F103ZET6 LCD屏采用正点原子2.5寸LCD屏 开发板兼容正点原子战舰开发板。 实现的功能: 计算器功能设计,完成基本的运算,结果显示。 效果视频演示地址: https://live.csdn.net/v/182604
  • V1V_1V1​而电容下端有电压Gnd(0V),自此形成电流,形成电流的同时,电容开始充电的过程,由于充电初期电势差比较大,而随着电容的充电,电容的电压会越来越大(电势差越来越小),于是就形成右边的时间速度的坐标...
  • 无源TN-LCD、STN-LCD的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管(TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性扫描线数无关,因此大大提高了图像质量。   TFTLCD...
  • STM32F103笔记(一)

    千次阅读 多人点赞 2020-05-04 20:21:41
    STM32的概述STM32的简述stm32系列的命名规律STM32F1系列芯片介绍关于查找资料-如果查找IO口是否独立,可查看《精英版IO引脚分配表》如何改变文本的样式插入链接图片如何插入一段漂亮的代码片生成一个适合你的列表...
  • 正点原子战舰V3 STM32F1xx固件库
  • 再探stm32

    2021-08-28 11:49:36
    一、新建寄存器版本工程模板 大体库函数模板一致。 步骤: 1.新建文件夹作为根目录,建立...对于stm32精英战舰版有7组IO口,每组16个IO GPIOA--GPIOG; stm32大部分引脚出了作为GPIO使用外也可以复用为外设功能
  • OLED字符显示函数 字符码表 程序 main.c #include "led.h" #include "delay.h" #include "key.h" #include "sys.h" #include "oled.h" /************************************************ ALIENTEK精英STM32开发板...
  • 基于STM32ZET6正点原子精英板,战舰版,最小的IIC接口0.96寸OLED代码
  • STM32F103(六)——定时器中断

    千次阅读 2020-05-31 23:50:17
    定时器原理例程1. 定时器基本原理1.1 三种定时器的区别1.2 通用...STM32F103ZE(精英版战舰版)有8个16位的定时器,其中有4个通用定时器,2个高级定时器,2个基本定时器。 1.1 三种定时器的区别 具体区别如下图:
  • GPIO的工作原理两个实验实例一. STM32F1 GPIO的工作方式输入模式输出模式 相关资料在于: 《STM32中文参考手册V10》第105页 GPIO的功能描述 《STM32数据参考手册》第20页 相关的IO口功能描述 一. STM32F1 GPIO的...
  • USB转TTL串口(收发) 在上一个例程USB转TTL串口(printf)的基础上进行修改。主要修改了以下几点内容: 1.由于不要使用printf了,所以把PUTCHAR_PROTOTYPE的定义部分去掉。...2.从官网例程中找到串口收发数据的...
  • 画的开发板原理图跟原子的一样 抄板过来的 练手用 适合ad的新手拿来练手
  • 2021.3.30 第一次笔记 STM32的入门学习之基础知识 一 STM32的介绍 STM32是基于ARM内核的32位MCU系列———内核为ARM公司为要求高性能,低成本,低功耗的嵌入式...对于STM32单片机来说主要分为三种:战舰精英版 mini
  • RT-Thread例程-基于正点原子-战舰/精英F103开发板
  • STM32F103ZET6学习笔记(2)

    千次阅读 2019-04-12 01:24:11
    32芯片解读以及相关知识介绍   万丈高楼亦由平地而起,...  下图是战舰版的资源图,如图所示,每个部分都有解释,其他的我就不做过多的介绍,看视频或者pdf都有详细的介绍,但是必要的我还是要写出来的,CPU,...
  • 目录前言ESP8266模块 相关资料代码下载:功能介绍:接线接ATK MODULE没有...STM32F1开发指南(精英版)-库函数版本_V1.2.pdf     ATK-ESP8266 WIFI用户手册_V1.2.pdf     ATK_E
  • STM32F103+RFID-RC522模块 实现简单读卡写卡demo

    千次阅读 多人点赞 2021-04-21 15:50:04
    目录前言代码下载:功能介绍:接线STM32STM32F1开发指南(精英版)-库函数版本_V1.2STM32中文参考手册RFID-RC522RFID射频模块电路原理图使用图+效果图一、先用手机软件NFC Writer读取空卡看看内容1、打开软件和NFC(ps...
  • 目录前言代码下载:功能介绍:接线效果图普通环境哈...DHT11说明书最新–.pdf     DHT11模块–.pdf     DHT11模块使用说明书 源码参考:野火dht11温湿度传感器测试实验,

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

stm32f103精英板与战舰区别