【云平台】小白从零开始:小程序阿里云平台控制STM32-GPS经纬度显示(软件篇二)

小白从零开始:小程序阿里云平台控制STM32-GPS经纬度显示(软件篇二)

文章目录

  • 前言
  • 一、GPS模块波特率调制
  • 二、0.96OLED显示模块驱动代码
  • 三、GPS模块驱动代码
  • 四、代码资料包获取方式
  • 总结


前言

小白从零开始:小程序阿里云平台控制stm32温湿度光照强度(软件篇)

【DIY】stm32f103c8t6+mqtt阿里云+小程序+n多外设

使用工具:
硬件:
PCB设计: 立创EDA+嘉立创
硬件外设:STM32F103C8T6最小系统+dht11+bh1750+mq2+mq7+gps+0.96oled+蓝牙hc06+esp8266-01s
设计出来的总体是这样

软件:
代码编译:KEIL5、
代码烧录:FLYMCU
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、GPS模块波特率调制

首先将GPS的波特率调到我们所需波特率,一般为115200。
GPS资料包在这里!!!!!!!!

请添加图片描述

请添加图片描述

二、0.96OLED显示模块驱动代码

0.96OLED显示模块驱动部分代码
将OLED初始化

void OLED_Init(void)
{GPIO_InitTypeDef  GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);	 //ʹÄÜB¶Ë¿ÚʱÖÓGPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;	 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //ÍÆÍìÊä³öGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//ËÙ¶È50MHzGPIO_Init(GPIOB, &GPIO_InitStructure);	  //³õʼ»¯GPIOB8,9GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);	Delay_Ms(800);OLED_WR_Byte(0xAE,OLED_CMD);//--display offOLED_WR_Byte(0x00,OLED_CMD);//---set low column addressOLED_WR_Byte(0x10,OLED_CMD);//---set high column addressOLED_WR_Byte(0x40,OLED_CMD);//--set start line address  OLED_WR_Byte(0xB0,OLED_CMD);//--set page addressOLED_WR_Byte(0x81,OLED_CMD); // contract controlOLED_WR_Byte(0xFF,OLED_CMD);//--128   OLED_WR_Byte(0xA1,OLED_CMD);//set segment remap OLED_WR_Byte(0xA6,OLED_CMD);//--normal / reverseOLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)OLED_WR_Byte(0x3F,OLED_CMD);//--1/32 dutyOLED_WR_Byte(0xC8,OLED_CMD);//Com scan directionOLED_WR_Byte(0xD3,OLED_CMD);//-set display offsetOLED_WR_Byte(0x00,OLED_CMD);//OLED_WR_Byte(0xD5,OLED_CMD);//set osc divisionOLED_WR_Byte(0x80,OLED_CMD);//OLED_WR_Byte(0xD8,OLED_CMD);//set area color mode offOLED_WR_Byte(0x05,OLED_CMD);//OLED_WR_Byte(0xD9,OLED_CMD);//Set Pre-Charge PeriodOLED_WR_Byte(0xF1,OLED_CMD);//OLED_WR_Byte(0xDA,OLED_CMD);//set com pin configuartionOLED_WR_Byte(0x12,OLED_CMD);//OLED_WR_Byte(0xDB,OLED_CMD);//set VcomhOLED_WR_Byte(0x30,OLED_CMD);//OLED_WR_Byte(0x8D,OLED_CMD);//set charge pump enableOLED_WR_Byte(0x14,OLED_CMD);//OLED_WR_Byte(0xAF,OLED_CMD);//--turn on oled panel
}  

三、GPS模块驱动代码

GPS模块驱动代码

void USART1_IRQHandler(void)                	//´®¿Ú1ÖжϷþÎñ³ÌÐò{
//	char temp;u8 Res;if( USART_GetITStatus( USART1,  USART_IT_RXNE) != RESET){//		temp = USART_ReceiveData( USART1);Res = USART_ReceiveData( USART1);if(Res == '$'){point1 = 0;	}Usart1_RxBuff[point1++] = Res;if(Usart1_RxBuff[0] == '$' && Usart1_RxBuff[4] == 'M' && Usart1_RxBuff[5] == 'C')			//È·¶¨ÊÇ·ñÊÕµ½"GPRMC/GNRMC"ÕâÒ»Ö¡Êý¾Ý{if(Res == '\n')									   {memset(Save_Data.GPS_Buffer, 0, GPS_Buffer_Length);      //Çå¿Õmemcpy(Save_Data.GPS_Buffer, Usart1_RxBuff, point1); 	//±£´æÊý¾ÝSave_Data.isGetData = true;point1 = 0;memset(Usart1_RxBuff, 0, USART1_RXBUFF_SIZE);      //Çå¿Õ				}	}if(point1 >= USART1_RXBUFF_SIZE){point1 = USART1_RXBUFF_SIZE;}	}#if SYSTEM_SUPPORT_OS 	//Èç¹ûSYSTEM_SUPPORT_OSÎªÕæ£¬ÔòÐèÒªÖ§³ÖOS.OSIntExit();  											 
#endif
} u8 Hand(char *a)                   // ´®¿ÚÃüÁîʶ±ðº¯Êý
{ if(strstr(Usart1_RxBuff,a)!=NULL)return 1;elsereturn 0;
}void CLR_Buf(void)                           // ´®¿Ú»º´æÇåÀí
{memset(Usart1_RxBuff, 0, USART1_RXBUFF_SIZE);      //Çå¿Õpoint1 = 0;                    
}void clrStruct()
{Save_Data.isGetData = false;Save_Data.isParseData = false;Save_Data.isUsefull = false;memset(Save_Data.GPS_Buffer, 0, GPS_Buffer_Length);      //Çå¿Õmemset(Save_Data.UTCTime, 0, UTCTime_Length);memset(Save_Data.latitude, 0, latitude_Length);memset(Save_Data.N_S, 0, N_S_Length);memset(Save_Data.longitude, 0, longitude_Length);memset(Save_Data.E_W, 0, E_W_Length);}
extern u8 KEY;
int receive_data[10];	

四、代码资料包获取方式

其他获取方式
1.公众号:万物汇联,关键词回复:阿里云代码。
2.CSDN:点击这里:代码资源
3.关注B站:Kisorge
UID:29599216

总结

本文仅仅简单介绍了软件驱动方面的配置,评论区欢迎讨论。GPS模块的资料包在文中通过CSDN积分下载即可。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部