之前实验到串口接收命令数据和发送仪器数据,已经串口模拟仪器和Cache数据库做仪器连接测试。这次实验STM32的定时器中断和显示部分。把串口启动后的LED状态显示由以前死循环方法里移到定时器中断里面,借助定时器中断显示发送给外部十六进制数据。
实现目标: 1.串口状态的LED灯闪烁从以前死循环移入定时器中断,这样串口发送数据时间长时候也不会卡主闪烁。 2.按0,1,2号键在显示器显示按的数字 3.按KEY_UP键时候给串口发送数据,且显示发送的十六进制数据
碰到的坑有: 在定时器中断里面如果调用的方法用了正点原则提供的delay_ms延时函数后会导致其他地方延时失效。因为我定时器中断间隔是2ms。每2ms调用delay_ms方法会使SysTick->LOAD重新加载。发现主函数延迟方法不好使后看他实现分析的。这个delay在中断存在时候基本废了。只能后面看着再实现个并发好使的延迟函数。
代码如下,没列出来的代码文件和上一个博客一样: timer.h
#ifndef _TIMER
#define _TIMER
#include "sys.h"
void InitTimer3(u16 arr,u16 psc);
void TestTimer3(void);
#endif
timer.c
#include "timer.h"
#include "led.h"
#include "smg.h"
void InitTimer3(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1;
TIM3->ARR=arr;
TIM3->PSC=psc;
TIM3->DIER|=1<<0;
TIM3->CR1|=0x01;
MY_NVIC_Init(0,3,TIM3_IRQn,2);
}
void TestTimer3(void)
{
InitLedEnv();
}
u8 GetSMGChar(char c)
{
if(c=='0')
{
return ALL_SMG_CHAR[0];
}
else if(c=='1')
{
return ALL_SMG_CHAR[1];
}
else if(c=='2')
{
return ALL_SMG_CHAR[2];
}
else if(c=='3')
{
return ALL_SMG_CHAR[3];
}
else if(c=='4')
{
return ALL_SMG_CHAR[4];
}
else if(c=='5')
{
return ALL_SMG_CHAR[5];
}
else if(c=='6')
{
return ALL_SMG_CHAR[6];
}
else if(c=='7')
{
return ALL_SMG_CHAR[7];
}
else if(c=='8')
{
return ALL_SMG_CHAR[8];
}
else if(c=='9')
{
return ALL_SMG_CHAR[9];
}
else if(c=='A')
{
return ALL_SMG_CHAR[10];
}
else if(c=='B')
{
return ALL_SMG_CHAR[11];
}
else if(c=='C')
{
return ALL_SMG_CHAR[12];
}
else if(c=='D')
{
return ALL_SMG_CHAR[13];
}
else if(c=='E')
{
return ALL_SMG_CHAR[14];
}
else if(c=='F')
{
return ALL_SMG_CHAR[15];
}
return ALL_SMG_CHAR[16];
}
int ledStat = 0;
int times=0;
int curSMGIndex=0;
void TIM3_IRQHandler(void)
{
if (TIM3->SR & 0X0001)
{
times++;
if (times % 100 == 0)
{
if (ledStat == 0)
{
ledStat = 1;
GPIOC->ODR &= ~(1 << 0);
}
else
{
ledStat = 0;
GPIOC->ODR |= 1 << 0;
}
}
if(SMG_LOCK_BUF==0)
{
char oneChar=SMG_SHOW_BUF[curSMGIndex];
SMGWriteData(GetSMGChar(oneChar), curSMGIndex);
SMGRefresh();
curSMGIndex++;
curSMGIndex%=8;
}
}
TIM3->SR &= ~(1 << 0);
}
main.c
#include "delay.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "usart.h"
#include "hardware.h"
#include "timer.h"
#include "smg.h"
int zlzmain(void)
{
Stm32_Clock_Init(9);
delay_init(72);
TestLed();
return 0;
}
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
InitSMG();
InitTimer3(19, 7199);
TestTimer3();
StartUsartCmdChl(72,9600);
}
smg.h
#ifndef _SMG
#define _SMG
#include "sys.h"
#include "delay.h"
#define LED_A0 PCout(10)
#define LED_A1 PCout(11)
#define LED_A2 PCout(12)
#define LED_DS PBout(3)
#define LED_LCLK PBout(4)
#define LED_SCK PBout(5)
extern u8 ALL_SMG_CHAR[];
extern char SMG_SHOW_BUF[];
extern int SMG_LOCK_BUF;
void InitSMG(void);
void SMGWriteData(u8 duan,u8 wei);
void SMGRefresh(void);
#endif
smg.c
#include "smg.h"
u8 ALL_SMG_CHAR[] = {0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6, 0xee, 0x3e, 0x9c, 0x7a, 0x9e, 0x8e, 0x01, 0x00};
char SMG_SHOW_BUF[8]={'5','2','5','7','1','3','1','4'};
int SMG_LOCK_BUF=0;
void InitSMG(void)
{
RCC->APB2ENR|=1<<3;
RCC->APB2ENR|=1<<4;
RCC->APB2ENR|=1<<0;
JTAG_Set(SWD_ENABLE);
GPIOB->CRL&=0XFF000FFF;
GPIOB->CRL|=0X00333000;
GPIOC->CRH&=0XFFF000FF;
GPIOC->CRH|=0X00033300;
GPIOB->BRR = 1<<3|1<<5;
GPIOB->BSRR = 1<<4;
GPIOC->BSRR = 1<<10|1<<11|1<<12;
}
void LED_Wei(u8 num)
{
LED_A0=num&0x01;
LED_A1=(num&0x02)>>1;
LED_A2=(num&0x04)>>2;
}
void SMGWriteData(u8 duan,u8 wei)
{
u8 i;
for( i=0;i<8;i++)
{
LED_DS=(duan>>i)&0x01;
LED_SCK=0;
LED_SCK=1;
}
LED_Wei(wei);
}
void SMGRefresh(void)
{
LED_LCLK=1;
LED_LCLK=0;
}
hardware.h
#ifndef __HARDWARE
#define __HARDWARE
int HexToInt(char c);
void U8Send(const char * str);
void StartUsartCmdChl(int pclk2, int bound);
void LED0Open(void);
void LED0Close(void);
void LED1Open(void);
void LED1Close(void);
void LED2Open(void);
void LED2Close(void);
void LED3Open(void);
void LED3Close(void);
void LED4Open(void);
void LED4Close(void);
void LED5Open(void);
void LED5Close(void);
void LED6Open(void);
void LED6Close(void);
void LED7Open(void);
void LED7Close(void);
void BeepOpen(void);
void BeepClose(void);
void ShowHexStr(const char * str);
void ShowHexChar(const char c);
#endif
hardware.c
#include "sys.h"
#include "delay.h"
#include "stdio.h"
#include "led.h"
#include "beep.h"
#include "key.h"
#include "usart.h"
#include "smg.h"
#include "hardware.h"
#include "string.h"
void StartUsartCmdChl(int pclk2, int bound)
{
InitUsart(pclk2, bound);
InitLedEnv();
InitKeyEnv();
InitBeepEnv();
u8 ENQ = 0x05;
u8 EOT = 0x04;
u16 times = 0;
u8 Key0OpenCmd = 0x0F;
u8 Key0CloseCmd = 0x10;
u8 Key1OpenCmd = 0x11;
u8 Key1CloseCmd = 0x12;
u8 Key2OpenCmd = 0x13;
u8 Key2CloseCmd = 0x14;
u8 Key3OpenCmd = 0x15;
u8 Key3CloseCmd = 0x16;
u8 Key4OpenCmd = 0x17;
u8 Key4CloseCmd = 0x18;
u8 Key5OpenCmd = 0x19;
u8 Key5CloseCmd = 0x1A;
u8 Key6OpenCmd = 0x1B;
u8 Key6CloseCmd = 0x1C;
u8 Key7OpenCmd = 0x1D;
u8 Key7CloseCmd = 0x1E;
u8 BeepOpenCmd = 0x1F;
u8 BeepCloseCmd = 0x20;
const char* machData="02 30 36 30 33 32 0D FF 20 52 45 53 55 4C 54 20 20 0D 21 20 30 31 31 2E 39 53 68 20 20 20 0D 22 20 30 32 2E 37 31 53 20 20 20 20 0D 23 20 30 32 32 2E 38 53 20 20 20 20 0D 24 20 30 30 2E 34 35 53 20 20 20 20 0D 25 20 30 30 33 2E 38 53 20 20 20 20 0D 28 20 30 38 2E 34 35 53 48 20 20 20 0D 29 20 30 37 31 2E 30 53 20 20 20 20 0D 2A 20 30 30 2E 31 33 53 20 20 20 20 0D 2B 20 30 30 31 2E 31 53 20 20 20 20 0D 2C 20 30 30 2E 31 35 53 20 20 20 20 0D 2D 20 30 30 31 2E 33 53 20 20 20 20 0D 2E 20 30 30 2E 30 34 53 20 20 20 20 0D 2F 20 30 30 30 2E 33 53 20 20 20 20 0D 30 20 30 30 2E 30 34 53 20 20 20 20 0D 31 20 30 30 30 2E 33 53 20 20 20 20 0D 32 20 30 34 2E 35 36 20 20 20 20 20 0D 33 20 30 31 33 2E 31 20 20 20 20 20 0D 34 20 30 33 39 2E 38 20 20 20 20 20 0D 35 20 30 30 30 38 37 20 20 20 20 20 0D 36 20 30 32 38 2E 37 20 20 20 20 20 0D 37 20 30 33 33 2E 30 20 20 20 20 20 0D 38 20 30 31 36 2E 31 20 68 20 20 20 0D 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 40 20 30 30 32 36 33 20 20 20 20 20 0D 41 20 30 30 37 2E 39 20 20 20 20 20 0D 42 20 30 2E 32 30 39 20 20 20 20 20 0D 43 20 30 31 32 2E 35 20 20 20 20 20 0D 50 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 51 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 52 20 20 20 20 20 0D 53 20 20 20 20 20 20 20 0D 54 20 4E 45 55 2B 0D 55 20 0D 56 20 0D 57 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 3D 66 AE F0 FF E5 B7 89 75 6B 64 60 5E 60 5E 5E 5F 5D 51 43 3B 35 33 31 2F 2D 2C 2A 29 28 27 26 26 25 25 25 24 24 24 23 23 23 23 23 22 21 21 21 21 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 58 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 21 24 29 30 3D 4B 5F 7C 98 B2 CD DF F2 FB FD FF F8 E9 DA CA B5 9D 8B 80 73 67 5B 51 4C 47 41 3B 38 34 2F 2D 2D 2A 27 26 24 23 22 22 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 59 20 20 20 20 20 20 20 20 20 20 20 26 34 48 63 7E A0 C2 E3 F8 FF FF FF F8 F1 EA E3 D6 CF C8 BB B4 A7 A0 92 8C 85 7E 77 77 71 6A 63 63 5C 56 56 4F 4F 48 3B 3B 34 34 2D 2D 26 26 26 26 26 26 26 26 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 5A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 3D 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 3F 38 35 32 31 30 2E 2C 2A 2B 29 27 27 26 26 26 25 27 23 25 24 23 24 24 23 22 23 21 22 22 22 21 22 21 21 22 21 21 20 20 21 20 21 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0D 5B 20 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 36 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 38 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 36 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 42 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 30 31 31 34 31 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 36 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 36 31 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 42 32 38 38 38 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 38 35 34 46 43 31 30 30 30 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 41 44 35 35 38 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 31 35 31 46 31 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 33 42 46 33 46 33 30 30 30 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 44 46 36 38 34 30 38 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 38 42 43 45 39 30 30 34 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 31 45 42 46 46 45 41 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 43 37 46 46 46 46 34 30 32 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 38 37 46 46 46 39 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 36 37 46 46 46 46 44 32 30 30 30 30 30 30 30 30 30 30 33 30 30 30 30 30 30 30 30 30 30 30 30 31 35 46 44 46 46 46 44 41 34 30 38 30 30 34 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 32 33 46 46 46 46 46 44 32 30 30 30 30 30 30 30 32 30 38 30 30 30 30 30 30 30 30 30 32 30 30 30 31 42 46 46 46 46 46 44 34 34 32 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 46 46 46 46 46 42 45 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 35 46 46 46 46 44 41 30 30 30 30 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 35 41 46 46 46 46 45 46 31 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 30 30 30 30 30 30 44 46 46 46 46 46 34 45 38 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 31 46 46 46 46 46 45 33 30 30 30 38 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 46 46 46 46 46 46 39 31 34 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 42 46 46 46 46 46 38 30 30 30 32 30 30 30 32 31 38 30 30 30 30 30 30 30 30 30 30 30 30 30 32 37 46 46 46 46 46 46 41 36 38 30 30 30 34 30 30 31 30 30 30 30 30 30 30 30 30 31 30 30 30 30 31 42 36 46 46 46 46 44 41 43 43 30 32 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 37 46 46 46 46 46 45 30 30 32 30 38 30 30 30 38 31 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 37 46 46 46 46 46 44 36 30 30 30 32 30 30 30 30 34 30 30 30 30 30 30 30 30 30 31 30 30 30 30 33 37 46 46 46 46 46 46 38 34 30 30 30 30 30 38 30 30 43 34 30 31 30 30 30 30 30 30 38 30 30 30 31 33 46 46 46 46 46 42 43 30 30 30 30 34 30 30 38 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 32 46 46 46 46 46 46 46 41 34 30 30 30 34 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 39 46 46 46 46 46 46 45 30 37 46 30 32 30 30 30 33 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 42 46 46 46 46 46 44 43 34 39 36 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 46 46 46 46 46 43 39 30 30 30 30 32 41 41 30 30 30 30 30 30 32 30 30 30 30 30 30 30 30 30 30 33 46 46 46 46 46 43 43 41 30 34 34 43 36 31 30 32 31 30 30 34 30 30 30 30 30 30 30 30 30 30 32 31 46 46 46 46 46 35 39 39 31 32 34 31 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 46 46 46 46 43 37 34 30 39 31 41 35 34 30 30 30 34 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 46 44 46 42 46 46 39 36 32 31 36 31 33 31 32 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 32 46 45 46 45 46 45 36 43 44 42 35 32 32 34 41 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 45 36 46 44 45 45 39 36 32 42 46 32 38 34 31 30 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 32 41 33 37 46 33 45 34 45 35 46 31 37 45 34 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 32 32 34 42 41 35 32 46 45 35 44 43 34 41 41 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 32 37 32 30 42 37 44 31 37 39 31 45 45 38 45 36 30 38 30 30 30 30 30 30 31 30 30 30 30 30 30 31 30 30 39 44 45 37 41 43 46 37 39 34 43 36 33 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 36 32 37 45 36 45 37 36 45 35 39 37 35 33 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 33 32 46 37 37 45 46 45 38 46 43 39 34 36 30 31 30 31 34 30 30 30 30 30 30 30 30 30 30 30 32 33 37 46 46 46 46 46 36 45 42 45 33 35 31 31 38 30 30 32 30 30 30 30 30 31 30 30 30 30 30 32 31 31 46 46 46 46 46 46 44 44 46 34 43 34 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 38 33 46 46 46 46 46 46 44 45 41 34 30 30 34 30 30 30 30 30 38 30 31 30 30 30 30 30 30 30 30 30 33 46 37 46 46 46 46 46 41 35 44 30 30 30 34 30 30 32 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34 46 46 46 46 46 46 46 45 38 36 34 31 30 32 31 30 32 30 30 38 30 30 30 30 30 30 30 30 30 30 30 39 42 46 46 46 46 46 46 36 38 44 30 32 38 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 35 46 46 46 46 46 46 32 36 39 30 30 30 30 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 42 46 46 46 44 44 42 30 45 30 30 31 30 32 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 31 34 44 46 37 46 46 46 33 30 38 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 37 46 42 46 46 31 43 30 34 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 33 35 30 33 46 39 37 31 32 33 31 30 34 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 33 30 30 34 31 31 41 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 38 31 38 36 36 42 32 30 41 30 30 30 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 33 30 30 38 30 42 43 34 30 33 39 42 34 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 41 32 38 30 34 32 31 35 38 34 31 30 30 30 34 30 30 31 30 30 30 30 38 30 30 30 30 30 30 30 30 30 30 30 31 30 30 38 30 30 30 30 31 30 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0D 5D 20 30 31 32 20 30 36 37 20 31 32 30 20 30 30 30 20 30 30 30 0D 5E 20 30 32 34 20 30 34 39 0D 5F 20 30 39 38 0D 60 20 30 31 32 20 30 36 37 20 31 32 30 0D 61 20 30 32 34 20 30 32 37 20 30 35 30 20 30 33 35 20 31 31 38 20 30 33 31 20 30 37 32 20 30 37 33 20 31 30 30 20 30 37 32 20 31 30 30 20 31 31 38 20 30 32 37 20 30 36 37 20 30 35 31 20 30 30 32 20 30 30 32 20 30 30 32 0D 66 20 20 20 20 20 4C 6D 6E 65 2D 20 20 20 20 20 0D 70 20 30 31 0D 71 20 31 39 2F 31 31 2F 31 34 20 31 30 68 33 39 6D 6E 34 39 73 0D 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 73 20 30 30 30 30 0D 75 20 31 30 32 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 76 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 77 20 20 20 20 20 20 20 20 20 0D 78 20 20 20 20 0D 79 20 30 0D 7B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 7C 20 20 20 20 20 20 20 20 20 20 20 0D 7D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 7F 20 41 42 58 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 80 20 42 0D 83 20 41 42 58 0D 8B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0D 90 20 30 31 33 38 32 20 30 31 33 30 37 20 30 31 33 39 36 20 30 31 33 37 37 20 30 31 34 32 31 20 30 31 34 36 33 20 30 31 33 31 38 20 30 31 33 39 33 20 30 31 33 37 37 20 30 31 33 39 39 20 30 31 34 34 34 20 30 31 33 34 35 20 30 38 33 34 37 20 30 38 32 37 37 0D 91 20 30 33 35 34 37 20 30 33 35 33 38 20 30 33 36 36 36 20 30 33 36 30 33 20 30 33 36 34 34 20 30 33 35 39 33 20 30 33 36 34 35 20 30 33 37 32 30 20 30 33 36 31 31 20 30 33 35 36 32 20 30 33 35 32 32 20 30 33 35 37 39 20 32 31 35 39 32 20 32 31 36 34 30 0D 92 20 30 32 30 31 35 20 30 32 30 31 35 20 30 32 30 31 35 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 30 30 30 30 20 30 32 30 31 35 20 30 33 36 33 36 0D 93 20 30 32 37 37 39 31 32 20 30 32 37 37 34 37 35 20 30 32 38 35 34 31 35 20 30 32 37 37 34 33 36 20 30 32 38 30 39 36 34 20 30 32 37 36 39 34 31 20 30 32 38 30 34 34 32 20 30 32 38 34 34 35 30 20 30 32 37 39 31 31 36 20 30 32 37 33 33 35 33 20 30 32 36 39 38 36 32 20 30 32 37 35 32 31 39 20 31 36 37 36 31 34 34 20 31 36 36 32 34 34 33 0D 94 20 30 32 36 31 31 20 30 32 36 36 37 20 30 32 37 31 38 20 30 32 36 34 30 20 30 32 36 36 37 20 30 32 35 39 31 20 30 32 36 32 33 20 30 32 36 36 34 20 30 32 36 30 34 20 30 32 35 39 31 20 30 32 36 32 31 20 30 32 36 34 34 20 31 35 38 39 35 20 31 35 37 34 38 0D 95 20 30 31 33 38 32 20 30 31 33 30 37 20 30 31 33 39 36 20 30 31 33 37 37 20 30 31 34 32 31 20 30 31 34 36 33 20 30 31 33 31 38 20 30 31 33 39 33 20 30 31 33 37 37 20 30 31 33 39 39 20 30 31 34 34 34 20 30 31 33 34 35 20 30 38 33 34 37 20 30 38 32 37 37 0D 96 20 30 36 30 33 38 20 30 30 30 39 33 0D A3 20 56 0D A4 20 31 0D A5 20 31 0D A6 20 31 0D A7 20 31 0D FD 20 38 38 62 38 0D 03\r\n";
while (1)
{
if (USART_RX_BUF_HASDATA == 1)
{
u8 len = USART_RX_BUF_CUTINDEX;
int cmdStart = 0;
int cmdStartIndex = 0;
u8 cmd;
for (u8 t = 0; t < len; t++)
{
if (USART_RX_BUF[t] == ENQ)
{
cmdStart = 1;
cmdStartIndex = t;
continue;
}
if (cmdStart == 1)
{
cmd = USART_RX_BUF[t];
cmdStart = 0;
}
if (USART_RX_BUF[t] == EOT && (t - cmdStartIndex) == 2)
{
if (cmd == Key0OpenCmd)
{
LED0Open();
}
else if (cmd == Key0CloseCmd)
{
LED0Close();
}
else if (cmd == Key1OpenCmd)
{
LED1Open();
}
else if (cmd == Key1CloseCmd)
{
LED1Close();
}
else if (cmd == Key2OpenCmd)
{
LED2Open();
}
else if (cmd == Key2CloseCmd)
{
LED2Close();
}
else if (cmd == Key3OpenCmd)
{
LED3Open();
}
else if (cmd == Key3CloseCmd)
{
LED3Close();
}
else if (cmd == Key4OpenCmd)
{
LED4Open();
}
else if (cmd == Key4CloseCmd)
{
LED4Close();
}
else if (cmd == Key5OpenCmd)
{
LED5Open();
}
else if (cmd == Key5CloseCmd)
{
LED5Close();
}
else if (cmd == Key6OpenCmd)
{
LED6Open();
}
else if (cmd == Key6CloseCmd)
{
LED6Close();
}
else if (cmd == Key7OpenCmd)
{
LED7Open();
}
else if (cmd == Key7CloseCmd)
{
LED7Close();
}
else if (cmd == BeepOpenCmd)
{
BeepOpen();
}
else if (cmd == BeepCloseCmd)
{
BeepClose();
}
printf("收到命令:");
USART1->DR = cmd;
while ((USART1->SR & 0X40) == 0);
printf("\r\n");
}
}
USART_RX_BUF_HASDATA = 0;
}
int key = GetPressKey(0);
if (key >= 0)
{
if (key == 0)
{
ShowHexChar('0');
printf("KEY0\r\n");
}
else if (key == 1)
{
ShowHexChar('1');
printf("KEY1\r\n");
}
else if (key == 2)
{
ShowHexChar('2');
printf("KEY2\r\n");
}
else if (key == 3)
{
GPIOC->ODR |= 1 << 0;
BeepOpen();
delay_ms(100);
BeepClose();
U8Send(machData);
delay_ms(10);
printf("zlz\r\n");
}
}
times++;
delay_ms(10);
}
}
void U8Send(const char * str)
{
int len=strlen(str);
for(int i=0;i<len;i+=3)
{
if(i+1<len)
{
char one=str[i];
char tow=str[i+1];
u8 oneHex=HexToInt(one)*16+HexToInt(tow);
USART1->DR = oneHex;
while ((USART1->SR & 0X40) == 0);
ShowHexChar(one);
ShowHexChar(tow);
delay_ms(5);
}
}
}
int HexToInt(char c)
{
if(c=='0')
{
return 0;
}
else if(c=='1')
{
return 1;
}
else if(c=='2')
{
return 2;
}
else if(c=='3')
{
return 3;
}
else if(c=='4')
{
return 4;
}
else if(c=='5')
{
return 5;
}
else if(c=='6')
{
return 6;
}
else if(c=='7')
{
return 7;
}
else if(c=='8')
{
return 8;
}
else if(c=='9')
{
return 9;
}
else if(c=='A')
{
return 10;
}
else if(c=='B')
{
return 11;
}
else if(c=='C')
{
return 12;
}
else if(c=='D')
{
return 13;
}
else if(c=='E')
{
return 14;
}
else if(c=='F')
{
return 15;
}
return 16;
}
int LED_IS_INIT = 0;
int BEEP_IS_INIT = 0;
int SMG_IS_INIT = 0;
void LED0Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 0);
}
void LED0Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 0;
}
void LED1Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 1);
}
void LED1Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 1;
}
void LED2Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 2);
}
void LED2Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 2;
}
void LED3Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 3);
}
void LED3Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 3;
}
void LED4Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 4);
}
void LED4Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 4;
}
void LED5Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 5);
}
void LED5Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 5;
}
void LED6Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 6);
}
void LED6Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 6;
}
void LED7Open(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR &= ~(1 << 7);
}
void LED7Close(void)
{
if (LED_IS_INIT == 0)
{
InitLedEnv();
LED_IS_INIT = 1;
}
GPIOC->ODR |= 1 << 7;
}
void BeepOpen(void)
{
if (BEEP_IS_INIT == 0)
{
InitBeepEnv();
BEEP_IS_INIT = 1;
}
GPIOB->ODR &= ~(1 << 8);
}
void BeepClose(void)
{
if (BEEP_IS_INIT == 0)
{
InitBeepEnv();
BEEP_IS_INIT = 1;
}
GPIOB->ODR |= 1 << 8;
}
void ShowHexStr(const char * str)
{
if (SMG_IS_INIT == 0)
{
InitSMG();
SMG_IS_INIT = 1;
}
int len=strlen(str);
for(int i=0;i<len;i++)
{
char one=str[i];
ShowHexChar(one);
delay_ms(50);
}
}
void ShowHexChar(const char c)
{
SMG_LOCK_BUF=1;
for(int i=0;i<7;i++)
{
SMG_SHOW_BUF[i]=SMG_SHOW_BUF[i+1];
}
SMG_SHOW_BUF[7]=c;
SMG_LOCK_BUF=0;
}
工程一点点庞大了,哈哈
|