/******************************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);//封闭串口发送完中止 USART_ITConfig(USART_IT_RXNE,ENABLE);//翻开串口接纳中止 } /******************************************************************************/ /* Function name: UART1_SendByte */ /* Descriptions: 发送单字节 */ /* input parameters: data:待发送数据 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ void USART_SendByte(uint8_t data) { USART_SendData8((unsigned char)data); /* Loop until the end of transmission */ while (USART_GetFlagStatus(USART_FLAG_TXE) == RESET); } /******************************************************************************/ /* Function name: UART1_SendString */ /* Descriptions: 发送字符串 */ /* input parameters: 无 */ /* output parameters: 无 */ /* Returned value: 无 */ /******************************************************************************/ void USART_SendString(uint8_t* Data,uint16_t len) { uint16_t i=0; for(;i
STM8L101F3P6查询发送中止接纳
/******************************Copyright(c)***********************************//**//*老李电子工作*//**//*-
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/277465.html