• Stm32_标准库_18_串口&蓝牙模块_手机与蓝牙模块通信_控制LED灯亮灭


    通过输入LED_ON和LED_OFF分别控制LED灯的亮与灭

    接线:

    LED的正极接正电,负极接GPIOA_Pin1

    蓝牙模块TXD接GPIOA_Pin3,VCC接正电,GND接负电

    注意:USART2是APB1外设,汉字占用字节数是字符的两倍

    使用:

    手机向蓝牙传输"LED_ON",LED灯亮,反之传输“LED_OFF”则LED灯熄灭

    代码:

    main函数:

    #include "stm32f10x.h"                  // Device header
    #include "Delay.h"
    #include "OLED.h"
    #include "Serial.h"
    #include "LED.h"
    
    char *News;
    
    void OledShow(void){
        OLED_ShowCHINESE(1,1,8);
    	  OLED_ShowCHINESE(1,2,9);
    	  OLED_ShowString(1, 5, ":LED_ON");
       	OLED_ShowCHINESE(2,1,8);
    	  OLED_ShowCHINESE(2,2,10);
    	  OLED_ShowString(2, 5, ":LED_OFF");
    	  OLED_ShowCHINESE(3,1,4);
      	OLED_ShowCHINESE(3,2,5);
    	  OLED_ShowString(3, 5, ":NONEL");
    	  OLED_ShowCHINESE(4,1,6);
      	OLED_ShowCHINESE(4,2,7);
    	  OLED_ShowString(4, 5, ":NONE");
    }
    
    int main(void){
    	
    	OLED_Init();
    	LED_Init();
    	Serial_Init();
    	OledShow();
    	
    	while (1){
    		
    		if(Serial_GetRxFlag() == 1){
    			News = Serial_returnNews();
    			Serial_drlContrl(News);
    			Serial_StateRecovery(News);
    		}
    		
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    LED.c 和 LED.h

    #include "stm32f10x.h"                  // Device header
    
    void LED_Init(void)
    {
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    	
    	GPIO_InitTypeDef GPIO_InitStructure;
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA, &GPIO_InitStructure);
    	
    	GPIO_SetBits(GPIOA, GPIO_Pin_1);
    }
    
    void LED1_ON(void)
    {
    	GPIO_ResetBits(GPIOA, GPIO_Pin_1);
    }
    
    void LED1_OFF(void)
    {
    	GPIO_SetBits(GPIOA, GPIO_Pin_1);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    #ifndef __LED_H
    #define __LED_H
    
    void LED_Init(void);
    void LED1_ON(void);
    void LED1_OFF(void);
    
    
    #endif
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    OLED.c扩充函数及OLED.h

    void OLED_ShowCHINESE(uint8_t Line, uint8_t Column, uint8_t Num)
    {
    	
    	uint8_t i;
    	uint8_t wide = 16;//字宽
    	
    	OLED_SetCursor(( Line - 1 ) * 2, ( Column - 1 )* wide);		//参数1:把光标设置在第几页. 参数2:把光标设置在第几列
    	for (i = 0; i < wide; i++)
    	{
    		OLED_WriteData(OLED_F10x16[Num][i]);			//显示上半部分内容
    	}
    	
    	OLED_SetCursor(( Line - 1 ) * 2 + 1,( Column - 1) * wide);		
    	for (i = 0; i < wide ; i++)
    	{ 
    		OLED_WriteData(OLED_F10x16[Num][i+wide]);		//显示下半部分内容
    	}
    
    }
    
    /* 
       直接用清屏函数整体刷新会导致OLED画面不连贯
       清除行函数:保留本行字符串,清除本行剩余部分
       row:清除的具体行
       begin:开始清除的位置
       end:清除结束的位置
    */
    
    void OLED_ClearLocation(uint8_t row, uint8_t begin, uint8_t end)
    {  
    	uint8_t i, j;
    	for (j = row * 2 - 2; j < row * 2; j++)
    	{
    		OLED_SetCursor(j, begin * 8);
    		for(i = begin * 8; i < end * 8; i ++)
    		{
    			OLED_WriteData(0x00);
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    #ifndef __OLED_H
    #define __OLED_H
    #include "stm32f10x.h"                  // Device header
    
    
    void OLED_Init(void);
    void OLED_Clear(void);
    void OLED_ClearLocation(uint8_t row, uint8_t begin, uint8_t end);
    void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char);
    void OLED_ShowString(uint8_t Line, uint8_t Column, char *String);
    void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
    void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length);
    void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
    void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
    uint8_t OLED_GetNumLength(uint16_t num);
    void OLED_ShowCHINESE(uint8_t Line, uint8_t Column, uint8_t Num);
    #endif
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    OLED_Font.h

    #ifndef __OLED_FONT_H
    #define __OLED_FONT_H
    #include "stm32f10x.h"                  // Device header
    
    /*OLED字模库,宽8像素,高16像素*/
    const uint8_t OLED_F8x16[][16]=
    {
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//  0
    	
    	0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
    	
    	0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
    	
    	0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,
    	0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
    	
    	0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,
    	0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
    	
    	0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,
    	0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
    	
    	0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,
    	0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
    	
    	0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
    	
    	0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,
    	0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
    	
    	0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,
    	0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
    	
    	0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,
    	0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
    	
    	0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,
    	0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
    	
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
    	
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
    	
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
    	
    	0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,
    	0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
    	
    	0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
    	0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
    	
    	0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
    	0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
    	
    	0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
    	0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
    	
    	0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
    	0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
    	
    	0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,
    	0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
    	
    	0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,
    	0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
    	
    	0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,
    	0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
    	
    	0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
    	0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
    	
    	0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,
    	0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
    	
    	0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
    	0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
    	
    	0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
    	
    	0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
    	
    	0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,
    	0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
    	
    	0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,
    	0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
    	
    	0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
    	0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
    	
    	0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,
    	0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
    	
    	0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,
    	0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
    	
    	0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,
    	0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
    	
    	0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,
    	0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
    	
    	0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,
    	0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
    	
    	0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,
    	0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
    	
    	0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
    	0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
    	
    	0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,
    	0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
    	
    	0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,
    	0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
    	
    	0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,
    	0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
    	
    	0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,
    	0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
    	
    	0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,
    	0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
    	
    	0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,
    	0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
    	
    	0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,
    	0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
    	
    	0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,
    	0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
    	
    	0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,
    	0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
    	
    	0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
    	0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
    	
    	0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,
    	0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
    	
    	0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,
    	0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
    	
    	0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,
    	0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
    	
    	0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,
    	0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
    	
    	0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,
    	0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
    	
    	0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,
    	0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
    	
    	0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,
    	0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
    	
    	0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,
    	0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
    	
    	0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
    	0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
    	
    	0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,
    	0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
    	
    	0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,
    	0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
    	
    	0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,
    	0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
    	
    	0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
    	
    	0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
    	0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
    	
    	0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
    	
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    	0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
    	
    	0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
    	
    	0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
    	0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
    	
    	0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,
    	0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
    	
    	0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,
    	0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
    	
    	0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,
    	0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
    	
    	0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
    	0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
    	
    	0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,
    	0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
    	
    	0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
    	0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
    	
    	0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,
    	0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
    	
    	0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,
    	0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
    	
    	0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,
    	0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
    	
    	0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,
    	0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
    	
    	0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,
    	0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
    	
    	0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
    	0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
    	
    	0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,
    	0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
    	
    	0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,
    	0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
    	
    	0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,
    	0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
    	
    	0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,
    	0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
    	
    	0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,
    	0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
    	
    	0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,
    	0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
    	
    	0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,
    	0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
    	
    	0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,
    	0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
    	
    	0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,
    	0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
    	
    	0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,
    	0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
    	
    	0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,
    	0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
    	
    	0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,
    	0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
    	
    	0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
    	0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
    	
    	0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,
    	0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
    	
    	0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,
    	0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
    	
    	0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,
    	0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
    	
    	0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,
    	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
    };
    
    const uint8_t OLED_F10x16[][32] ={
    
     
    
    0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
    0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,/*"温",0*/
    	
    0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
    0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,/*"度",1*/
    
    
    0x40,0x40,0x42,0x44,0x58,0xC0,0x40,0x7F,0x40,0xC0,0x50,0x48,0x46,0x40,0x40,0x00,
    0x80,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x78,0x00,/*光,2*/
    
    
    
    0x00,0xFE,0x42,0x42,0x42,0xFE,0x00,0x42,0xA2,0x9E,0x82,0xA2,0xC2,0xBE,0x00,0x00,
    0x80,0x6F,0x08,0x08,0x28,0xCF,0x00,0x00,0x2F,0xC8,0x08,0x08,0x28,0xCF,0x00,0x00,/*"照",3*/
    
    
    0x00,0x08,0x30,0x00,0xFF,0x20,0x20,0x20,0x20,0xFF,0x20,0x20,0x22,0x2C,0x20,0x00,
    0x04,0x04,0x02,0x01,0xFF,0x80,0x40,0x30,0x0E,0x01,0x06,0x18,0x20,0x40,0x80,0x00,/*"状",4*/
    
    0x00,0x04,0x84,0x84,0x44,0x24,0x54,0x8F,0x14,0x24,0x44,0x84,0x84,0x04,0x00,0x00,
    0x41,0x39,0x00,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00,/*"态",5*/
    
    
    0x10,0x10,0x10,0xFF,0x10,0x50,0x44,0x54,0x65,0xC6,0x44,0x64,0x54,0x44,0x40,0x00,
    0x04,0x44,0x82,0x7F,0x01,0x82,0x82,0x4A,0x56,0x23,0x22,0x52,0x4E,0x82,0x02,0x00,/*"接",6*/
    
    0x00,0xFC,0x00,0x00,0xFF,0x00,0x40,0x20,0xD8,0x17,0x10,0x10,0xF0,0x10,0x10,0x00,
    0x00,0x0F,0x04,0x02,0xFF,0x00,0x80,0x40,0x21,0x16,0x08,0x16,0x21,0x40,0x80,0x00,/*"收",7*/
    
    0x80,0x70,0x00,0xFF,0x20,0x10,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x00,
    0x80,0x60,0x18,0x07,0x08,0x30,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*"灯",8*/
    
    0x00,0x04,0x04,0x74,0x54,0x54,0x55,0x56,0x54,0x54,0x54,0x74,0x04,0x04,0x00,0x00,
    0x84,0x83,0x41,0x21,0x1D,0x05,0x05,0x05,0x05,0x05,0x7D,0x81,0x81,0x85,0xE3,0x00,/*"亮",9*/
    
    0x02,0x02,0x82,0x72,0x02,0x02,0x02,0xFE,0x02,0x02,0x82,0x42,0x32,0x02,0x02,0x00,
    0x80,0x81,0x40,0x20,0x10,0x0C,0x03,0x00,0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,/*"灭",10*/
    
    };
    #endif
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259
    • 260
    • 261
    • 262
    • 263
    • 264
    • 265
    • 266
    • 267
    • 268
    • 269
    • 270
    • 271
    • 272
    • 273
    • 274
    • 275
    • 276
    • 277
    • 278
    • 279
    • 280
    • 281
    • 282
    • 283
    • 284
    • 285
    • 286
    • 287
    • 288
    • 289
    • 290
    • 291
    • 292
    • 293
    • 294
    • 295
    • 296
    • 297
    • 298
    • 299
    • 300
    • 301
    • 302
    • 303
    • 304
    • 305
    • 306
    • 307
    • 308
    • 309
    • 310
    • 311
    • 312
    • 313
    • 314
    • 315
    • 316
    • 317
    • 318
    • 319
    • 320
    • 321
    • 322
    • 323
    • 324
    • 325
    • 326
    • 327
    • 328
    • 329
    • 330
    • 331
    • 332
    • 333
    • 334
    • 335
    • 336
    • 337
    • 338

    Serial.c及Serial.h

    #include "stm32f10x.h"                  // Device header
    #include 
    #include 
    #include "Delay.h"
    #include 
    #include "OLED.h"
    #include 
    #include "LED.h"
    
    uint8_t Serial_RxData;//存数据
    uint8_t Serial_RxFlag;//标志位
    GPIO_InitTypeDef GPIO_InitStructu;//GPIO
    USART_InitTypeDef USART_InitStructure;//串口
    NVIC_InitTypeDef NVIC_InitStructur;//中断
    char news[100] = "";//存数据
    uint8_t I = 0;
    uint8_t flagDate = 0;//标志是否传入日期数据
    uint8_t flagTime = 0;//标志是否传入时间数据
    
    
    void Serial_Init(void)
    {
    	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    		
    	GPIO_InitStructu.GPIO_Mode = GPIO_Mode_IPU;//输入上拉
    	GPIO_InitStructu.GPIO_Pin = GPIO_Pin_3;
    	GPIO_InitStructu.GPIO_Speed = GPIO_Speed_50MHz;
    	GPIO_Init(GPIOA, &GPIO_InitStructu);
    	
    	
    	 
    	USART_InitStructure.USART_BaudRate = 9600;
    	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    	USART_InitStructure.USART_Mode = USART_Mode_Rx;
    	USART_InitStructure.USART_Parity = USART_Parity_No;
    	USART_InitStructure.USART_StopBits = USART_StopBits_1;
    	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    	USART_Init(USART2, &USART_InitStructure);
    	
    	
    	
    	 
    	USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    	
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//通道
    	
    	 
    	NVIC_InitStructur.NVIC_IRQChannel = USART2_IRQn;//中断通道
    	NVIC_InitStructur.NVIC_IRQChannelCmd = ENABLE;
    	NVIC_InitStructur.NVIC_IRQChannelPreemptionPriority = 3;
    	NVIC_InitStructur.NVIC_IRQChannelSubPriority = 1;
    	NVIC_Init(&NVIC_InitStructur);
    	
    	USART_Cmd(USART2, ENABLE);
    }
    
    
    uint8_t Serial_GetRxFlag(void)//读取标志位后自动青除
    {
    	if (Serial_RxFlag == 1)
    	{
    		Serial_RxFlag = 0;
    		return 1;
    	}
    	return 0;
    }
    
    uint8_t Serial_GetFlagDate(void)//读取标志位后自动青除
    {
    	if (flagDate == 1)
    	{
    		flagDate = 0;
    		return 1;
    	}
    	return 0;
    }
    
    uint8_t Serial_GetFlagTime(void)//读取标志位后自动青除
    {
    	if (flagTime == 1)
    	{
    		flagTime = 0;
    		return 1;
    	}
    	return 0;
    }
    
    void Serial_GetRxFlag_SET(void){
    	   Serial_RxFlag = 1;
    }
    
    char * Serial_returnNews(void){//返还一个数组
    	     char * array;
    	     uint8_t i = 0;
    	     array = (char *) malloc(sizeof(char) * 100);
    	     Delay_ms(300);//等待数据传输完
    	     while(i < I){
    				    if(news[i] == '/') flagDate = 1;
    				    if(news[i] == ':') flagTime = 1;
    				    array[i] = news[i];
    				    i ++;
    			 }
    			 return array;
    }
    
    void Serial_RESETI(void){//初始化I
    	   I = 0;
    }
    
    uint8_t Serial_GetI(void){//返回I
    	   return I;
    }
    	
    void USART2_IRQHandler(void)//中断函数
    {
    	
    	if (USART_GetITStatus(USART2, USART_IT_RXNE) == SET)
    	{
    		news[I] = USART_ReceiveData(USART2);//读数据
    		Serial_RxFlag = 1;//至标志位为有数据
    		I ++;
    		USART_ClearITPendingBit(USART2, USART_IT_RXNE);
    		 
    	}
    }
    
    void Serial_StateRecovery(char *News){
    	   	 Serial_RESETI();//I至0
    			 Serial_GetRxFlag();//制零否者if循环将会被执行两次
    			 free(News);//释放空间必须释放否者发生地址紊乱,直接卡机
    }
    
    void Serial_drlContrl(char * News){
    	   News[I] = '\0';
    	   if(strcmp(News, "LED_ON") == 0){
    			  LED1_ON();
    			  OLED_ShowString(3, 6, "RIGHT");
    		 }
    		 else if(strcmp(News, "LED_OFF") == 0){
    				LED1_OFF();
    			  OLED_ShowString(3, 6, "RIGHT");
    		 }
    		 else{ 		 
    		    OLED_ShowString(3, 6, "ERROR");
    		 }
    		 OLED_ClearLocation(4, 6, 16);
    		 OLED_ShowString(4, 6, News);
    		 Delay_ms(2000);
    		 OLED_ShowString(3, 6, "NONEL");
    		 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    #ifndef __SERIAL_H
    #define __SERIAL_H
    #include "stm32f10x.h"  
    #include 
    
    void Serial_Init(void);
    uint8_t Serial_GetRxFlag(void);
    uint8_t Serial_GetRxData(void);
    void Serial_GetRxFlag_SET(void);
    char * Serial_returnNews(void);
    void Serial_RESETI(void);
    uint8_t Serial_GetI(void);
    uint8_t Serial_GetFlagTime(void);
    uint8_t Serial_GetFlagDate(void);
    void Serial_StateRecovery(char *News);
    void Serial_drlContrl(char * News);
    
    #endif
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    Babeljs简介与使用
    [算法日志]图论: 深度优先搜索(DFS)
    CSS定位
    测试老中医、备战金九银十:38道关于软件测试技术面试题(附带答案)
    Mybatis第三方PageHelper分页插件原理
    造轮子之EventBus
    bug总结(1)--变量取错
    嵌入式Linux系统相关练习
    连花清瘟胶囊新冠应用 大健康医药·李喜贵:微量元素作用解密
    Flutter MQTT通信(实现聊天功能)
  • 原文地址:https://blog.csdn.net/xyint/article/details/134366151