微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM8L101F3P6查询发送中断接收

STM8L101F3P6查询发送中断接收

时间:11-09 来源:互联网 点击:
/******************************Copyright (c)***********************************/ /* */ /* 老李电子工作 */ /* */ /*------------------------------File Info-------------------------------------*/ /* File name: main.c */ /* Last modified Date: 2014-06-23 */ /* Last Version: 1.0 */ /* Descriptions: STM8L103F3P6,内部时钟,16MHz,串口查询发送中断接收。 */ /* 本程序模拟一小段协议的解析,接收到报文0xc2,0x01,0x7b后*/ /* 返回报文0xd2,0x64,0x21 */ /* 查询发送,中断接收 */ /* */ /* 硬件连接: */ /* TX----PC3 */ /* RX----PC2 */ /* */ /*----------------------------------------------------------------------------*/ /* Created by: Li Xiang */ /* Created date: 2014-06-19 */ /* Version: 1.0 */ /* Descriptions: 无 */ /* */ /******************************************************************************/ /* Includes ------------------------------------------------------------------*/ #include "stm8l10x.h" #include "stm8l10x_usart.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ #define POWER_BD GPIO_Pin_0 #define POWER_BT GPIO_Pin_1 #define MSEL GPIO_Pin_2 #define NRESET GPIO_Pin_3 #define BD_NRESET GPIO_Pin_4 #define RESETB GPIO_Pin_5 #define SCL2 GPIO_Pin_6 #define SDA2 GPIO_Pin_7 #define SDA GPIO_Pin_0 #define SCL GPIO_Pin_1 #define SCREEN_CTRL GPIO_Pin_4 #define POWER_WIFI GPIO_Pin_0 /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ uint8_t RXBUF[64]; uint8_t rxcounter=0; uint8_t rxflag=0; /* Private function prototypes -----------------------------------------------*/ static void BoardInit(void); static void CLK_Init(void); static void GPIO_Init_my(void); static void USART_Config(void); void USART_SendByte(uint8_t data); void USART_SendString(uint8_t* Data,uint16_t len); void Delay_ms(uint32_t nCount); /* Private functions ---------------------------------------------------------*/ /******************************************************************************/ /* Function name: main */ /* Descriptions: 主函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ void main(void) { uint8_t i=0; BoardInit(); enableInterrupts(); while (1){ if(rxflag==1){ switch(RXBUF[0]){ case 0xc1: break; case 0xc2: if( RXBUF[1]==0x01 && RXBUF[2]==0x7b ){ for(i=0;i<64;i++){ RXBUF[i]=0; } rxcounter=0; rxflag=0; USART_SendByte(0xD2); USART_SendByte(0x64); USART_SendByte(0x21); } break; case 0xc3: break; } } } } /******************************************************************************/ /* Function name: BoardInit */ /* Descriptions: 主函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ static void BoardInit(void) { CLK_Init(); GPIO_Init_my(); USART_Config(); } /******************************************************************************/ /* Function name: CLK_Init */ /* Descriptions: 时钟初始化函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ static void CLK_Init(void) { CLK_DeInit(); CLK_MasterPrescalerConfig(CLK_MasterPrescaler_HSIDiv1); } /******************************************************************************/ /* Function name: GPIO_Init_my */ /* Descriptions: IO初始化函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ static void GPIO_Init_my(void) { GPIO_Init(GPIOA,GPIO_Pin_2|GPIO_Pin_3,GPIO_Mode_Out_PP_Low_Slow); //悬空未用 GPIO_Init(GPIOB,POWER_BD,GPIO_Mode_Out_PP_Low_Slow); //默认断电 GPIO_Init(GPIOB,POWER_BT,GPIO_Mode_Out_PP_Low_Slow); //取消未用 GPIO_Init(GPIOB,MSEL,GPIO_Mode_Out_PP_Low_Slow); //取消未用,Wifi模式选择 GPIO_Init(GPIOB,NRESET,GPIO_Mode_Out_PP_Low_Slow); //取消未用,Wifi复位 GPIO_Init(GPIOB,BD_NRESET,GPIO_Mode_Out_PP_Low_Slow); //北斗复位信号,默认复位状态 GPIO_Init(GPIOB,RESETB,GPIO_Mode_Out_PP_Low_Slow); //取消未用,蓝牙复位 GPIO_Init(GPIOB,SDA2|SCL2,GPIO_Mode_Out_OD_HiZ_Slow); //电池电量用 GPIO_Init(GPIOC,SDA|SCL,GPIO_Mode_Out_OD_HiZ_Slow); //温度传感器 GPIO_Init(GPIOC,GPIO_Pin_2,GPIO_Mode_In_PU_No_IT); //串口接收 GPIO_Init(GPIOC,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Slow); //串口发送 GPIO_Init(GPIOD,GPIO_Pin_All,GPIO_Mode_Out_PP_Low_Slow); //取消未用,Wifi供电 } /******************************************************************************/ /* Function name: USART_Config */ /* Descriptions: 串口初始化函数 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ static void USART_Config(void) { CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE); USART_DeInit(); USART_Init((uint32_t)9600, USART_WordLength_8D, USART_StopBits_1, USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Rx | USART_Mode_Tx)); USART_Cmd(ENABLE); USART_ITConfig(USART_IT_TXE,DISABLE);//关闭串口发送中断 USART_ITConfig(USART_IT_TC,DISABLE);//关闭串口发送完中断

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top