stm32

iwdg.c

#include "iwdg.h"


void IWDG_Init(u8 prer,u16 rlr) 
{   
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //ʹÄܶԼĴæÆ÷IWDG_PRºÍIWDG_RLRµÄд²Ù×÷

    IWDG_SetPrescaler(prer);  //ÉèÖÃIWDGÔ¤·ÖƵֵ:ÉèÖÃIWDGÔ¤·ÖƵֵΪ64

    IWDG_SetReload(rlr);  //ÉèÖÃIWDGÖØ×°ÔØÖµ

    IWDG_ReloadCounter();  //°´ÕÕIWDGÖØ×°ÔØ¼Ä´æÆ÷µÄÖµÖØ×°ÔØIWDG¼ÆÊýÆ÷

    IWDG_Enable();  //ʹÄÜIWDG
}
//ι¶ÀÁ¢¿´ÃŹ·
void IWDG_Feed(void)
{   
    IWDG_ReloadCounter();                                          
}



iwdg.h

#ifndef __WDG_H
#define __WDG_H
#include "sys.h"
//////////////////////////////////////////////////////////////////////////////////   
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//Mini STM32¿ª·¢°å
//¿´ÃŹ· Çý¶¯´úÂë          
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2010/5/30
//°æ±¾£ºV1.0
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ÕýµãÔ­×Ó 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////    


void IWDG_Init(u8 prer,u16 rlr);
void IWDG_Feed(void);


#endif

stm32f10x_it.c

#include "stm32f10x_it.h"
#include "delay.h"
#include"stdlib.h"
#include"string.h"


extern __IO int value_1;
extern __IO int value_2;
extern __IO int value_3;
extern __IO int value_4;
extern __IO int value_5;
extern float angle;
uint8_t temp[40],TEMP[40];
u8 counter1=0;


/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/******************************************************************************/
/*            Cortex-M3 Processor Exceptions Handlers                         */
/******************************************************************************/

void USART2_IRQHandler(void)           //´®¿Ú2È«¾ÖÖжϷþÎñº¯Êý
{ 
     if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //½ÓÊÕÖжÏÓÐЧ,Èô½ÓÊÕÊý¾Ý¼Ä´æÆ÷Âú
     {
      temp[counter1] = USART_ReceiveData(USART2);   //½ÓÊÕÊý¾Ý
      if(counter1 == 0 && temp[0]!=0x68) return;    //counter1 == 0&&temp[0]=0x68 悦﵀
      counter1++;       
      if(counter1==40) //½ÓÊÕµ½n¸öÊý¾Ý
      { 
         counter1=0; //ÖØÐ¸³Öµ£¬×¼±¸ÏÂÒ»Ö¡Êý¾ÝµÄ½ÓÊÕ
         memcpy(TEMP,temp,40);
         //printf("%s\r\n",TEMP);
      }
    }

   }







/**
  * @}
  */ 


/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

stm32f10x_it.h

/**
  ******************************************************************************
  * @file    GPIO/IOToggle/stm32f10x_it.h 
  * @author  MCD Application Team
  * @version V3.5.0
  * @date    08-April-2011
  * @brief   This file contains the headers of the interrupt handlers.
  ******************************************************************************
  * @attention
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>
  ******************************************************************************
  */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM32F10x_IT_H
#define __STM32F10x_IT_H

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */

void NMI_Handler(void);
void HardFault_Handler(void);
void MemManage_Handler(void);
void BusFault_Handler(void);
void UsageFault_Handler(void);
void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);


#endif /* __STM32F10x_IT_H */

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/

time.c

#include "time.h"

void LED_Init(void)
{

 GPIO_InitTypeDef  GPIO_InitStructure;

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;               //LED0-->PA.8 ¶Ë¿ÚÅäÖÃ
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //ÍÆÍìÊä³ö
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       //IO¿ÚËÙ¶ÈΪ50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);                  //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
 GPIO_SetBits(GPIOA,GPIO_Pin_8);                         //PA.8 Êä³ö¸ß

// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                 //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
// GPIO_Init(GPIOD, &GPIO_InitStructure);                    //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
// GPIO_SetBits(GPIOD,GPIO_Pin_2);                       //PD.2 Êä³ö¸ß 

 //GPIO_ResetBits(GPIOA,GPIO_Pin_8);
// GPIO_ResetBits(GPIOD,GPIO_Pin_2);

}
/****************************
**TIM2µÄͨµÀ1ʹÓõ¥Âö³åģʽ
**TIM3ʹÓÃÃÅ¿ØÄ£Ê½ÓÃÀ´Êä³öPWM
**
****************************/
//TIM2per:֨װֵ
//Compare1:±È½Ï²¶»ñ1µÄÔ¤×°ÔØÖµ
void Motor_Init(u16 TIM2per, u16 TIM3per, u16 TIM3Compare1)
{
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
  TIM_OCInitTypeDef TIM_OCInitStruct;
  GPIO_InitTypeDef GPIO_InitStruct;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//ʹÄܶ¨Ê±Æ÷2µÄʱÖÓ
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//ʹÄܶ¨Ê±Æ÷3µÄʱÖÓ
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ʹÄÜGPIOAʱÖÓ
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ʹÄܸ´ÓÃIOʱÖÓ

  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//¸´ÓÃÍÆÍìÊä³ö
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_6;//PA6
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&GPIO_InitStruct);

  //TIM2¹¤×÷ÔÚµ¥Âö³åÏÂ
  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//ûÓÐʱÖÓ·Ö¸î
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//ÏòÉϼÆÊýģʽ
  TIM_TimeBaseInitStruct.TIM_Prescaler = 7199;//Ô¤·ÖƵֵ,ÿ100us¼ÆÊýÒ»´Î
  TIM_TimeBaseInitStruct.TIM_Period = TIM2per;//֨װֵ
  TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

  TIM_SelectOnePulseMode(TIM2,TIM_OPMode_Single);//ÉèÖÃTIM2ÔÚµ¥Âö³åģʽ£¬ÇÒÊǵ¥Ò»µÄÂö³å£¬ÔÚÏÂÒ»¸ö¸üÐÂʼþÍ£Ö¹
  TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);//ʹÄܶ¨Ê±Æ÷2µÄͨµÀ1Ô¤×°ÔØ¼Ä´æÆ÷
  TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_OC1Ref);

  TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2;//ÔÚÏòÉϼÆÊýʱ£¬Ò»µ©TIMx_CNT<TIMx_CCR1ʱͨµÀ1ΪÎÞЧµçƽ£¬·ñÔòΪÓÐЧµçƽ
  TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//OC1Êä³öʹÄÜ
  TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//ÓÐЧµçƽΪ¸ß
  TIM_OCInitStruct.TIM_Pulse = 1;//±È½Ï²¶»ñ1µÄÔ¤×°ÔØÖµ
  TIM_OC1Init(TIM2,&TIM_OCInitStruct);

  TIM_Cmd(TIM2,DISABLE);//ÏȲ»Ê¹ÄÜÄÜTIM2


  //TIM3¹¤×÷ÔÚ´ÓģʽµÄÃÅ¿ØÄ£Ê½ÏµÄPWMÊä³öģʽ
  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//ûÓÐʱÖÓ·Ö¸î
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//ÏòÉϼÆÊýģʽ
  TIM_TimeBaseInitStruct.TIM_Prescaler = 719;//Ô¤·ÖƵֵ£¬10us¼ÆÊýÒ»´Î
  TIM_TimeBaseInitStruct.TIM_Period = TIM3per;//֨װֵ
  TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);

  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);//TIM3ΪÃÅ¿ØÄ£Ê½
  TIM_SelectMasterSlaveMode(TIM3,TIM_MasterSlaveMode_Enable);//ʹÄÜTIM3µÄÖ÷´Óģʽ
  TIM_SelectInputTrigger(TIM3,TIM_TS_ITR1);//ÄÚ²¿´¥·¢£¬´ÓTIM2´¥·¢

  TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2;//ÔÚÏòÉϼÆÊýʱ£¬Ò»µ©TIMx_CNT<TIMx_CCR1ʱͨµÀ1ΪÎÞЧµçƽ£¬·ñÔòΪÓÐЧµçƽ
  TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//OC1Êä³öʹÄÜ
  TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//ÓÐЧµçƽΪ¸ß
  TIM_OCInitStruct.TIM_Pulse = TIM3Compare1;//±È½Ï²¶»ñ1µÄÔ¤×°ÔØÖµ
  TIM_OC1Init(TIM3,&TIM_OCInitStruct);

  TIM_Cmd(TIM3,ENABLE);//ʹÄÜTIM3
}

//ÉèÖÃPWMµÄÊä³ö
//Cycle:ΪÖÜÆÚ,µ¥Î»(us)
//Pulse_Num:ΪÂö³å¸öÊý£¨Ð¡ÓÚ3200£©
void TIM2_TIM3_PWM(u16 Cycle, u16 Pulse_Num)
{
  u16 TIM3per = 0;
  u32 Time = 0;
  //¸Ä±äTIM3µÄ֨װֵ¸Ä±äÂö³åƵÂÊÕâÀïÉèÖÃÂö³åÕ¼¿Õ±ÈΪ50%
  //¸Ä±äTIM2µÄÔ¤·ÖƵÆ÷ºÍ֨װֵ¸Ä±äÂö³å¸öÊý

  Time = Cycle * Pulse_Num;
  Time /= 100;              //Ô¤·ÖƵΪ7200,100us¼ÆÊýÒ»´Î
  TIM3per = Cycle/10;       //Ô¤·ÖƵΪ720,10us¼ÆÊýÒ»´Î

  TIM_SetAutoreload(TIM2, Time+1);//ÉèÖÃTIM2µÄ֨װֵ
  TIM_SetAutoreload(TIM3, TIM3per-1);//ÉèÖÃTIM3µÄ֨װֵ
  TIM_SetCompare1(TIM3,TIM3per/2);//ÉèÖÃÕ¼¿Õ±ÈΪ50%
  TIM_Cmd(TIM2,ENABLE);//ʹÄÜTIM2
}
void TIM1_PWM_Init(void)
  {

      GPIO_InitTypeDef GPIO_InitStructure;
      TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
      TIM_OCInitTypeDef TIM_OCInitStructure;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
      /////////////////TIM1_CH4 PA11
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
      GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
      GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
      GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
      GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
      GPIO_Init(GPIOA,&GPIO_InitStructure);



      TIM_TimeBaseStructure.TIM_Period = 100; //ÉèÖÃ×Ô¶¯ÖØ×°ÔØÖµ
      TIM_TimeBaseStructure.TIM_Prescaler =71; //ÉèÖÃÔ¤·ÖƵֵ
      TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ
      TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //


      TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
      TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ
      TIM_OCInitStructure.TIM_Pulse = 0; //ÉèÖôý×°Èë²¶»ñ±È½Ï¼Ä´æÆ÷µÄÂö³åÖµ
      TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ¸ß
      TIM_OC4Init(TIM1, &TIM_OCInitStructure); //¢Û³õʼ»¯ÍâÉè TIMx
      TIM_OC4PreloadConfig(TIM1, TIM_OCPreload_Enable);

      TIM_CtrlPWMOutputs(TIM1,ENABLE);  //¢ÝMOE Ö÷Êä³öʹÄÜ

      TIM_ARRPreloadConfig(TIM1, ENABLE); //ʹÄÜ TIMx ÔÚ ARR ÉϵÄÔ¤×°ÔØ¼Ä´æÆ÷
      TIM_Cmd(TIM1, ENABLE); //¢ÜʹÄÜ TIM1
  }
// void TIM4_Init(u16 arr,u16 psc)/////////////////10ms¶¨Ê±Æ÷   ad²É¼¯
// {
//   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
//  NVIC_InitTypeDef NVIC_InitStructure;

//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //ʱÖÓʹÄÜ
//  
//  //¶¨Ê±Æ÷TIM4³õʼ»¯
//  TIM_TimeBaseStructure.TIM_Period = arr; //ÉèÖÃÔÚÏÂÒ»¸ö¸üÐÂʼþ×°Èë»î¶¯µÄ×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ    
//  TIM_TimeBaseStructure.TIM_Prescaler =psc; //ÉèÖÃÓÃÀ´×÷ΪTIMxʱÖÓÆµÂʳýÊýµÄÔ¤·ÖƵֵ
//  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
//  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIMÏòÉϼÆÊýģʽ
//  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯TIMxµÄʱ¼ä»ùÊýµ¥Î»
//  
//  TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //ʹÄÜÖ¸¶¨µÄTIM2ÖжÏ,ÔÊÐí¸üÐÂÖжÏ

//  //ÖжÏÓÅÏȼ¶NVICÉèÖÃ
//  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  //TIM3ÖжÏ
//  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //ÏÈÕ¼ÓÅÏȼ¶0¼¶
//  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //´ÓÓÅÏȼ¶3¼¶
//  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQͨµÀ±»Ê¹ÄÜ
//  NVIC_Init(&NVIC_InitStructure);  //³õʼ»¯NVIC¼Ä´æÆ÷


//  TIM_Cmd(TIM4, ENABLE);  //ʹÄÜTIMx      
//   TIM_ClearFlag(TIM4, TIM_FLAG_Update);  
// }


// void TIM4_Init(void)
//   {
//     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
//   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
//     GPIO_InitTypeDef GPIO_InitStructure;
//     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;//PE0
//   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PE0ÉèÖóÉÊäÈ룬±àÂëÆ÷²âËÙÐèÒªÉèÖÃΪÉÏÀ­      
//   GPIO_Init(GPIOE, &GPIO_InitStructure);//³õʼ»¯GPIOE.0
//     TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure; 
//   TIM_DeInit(TIM4); 
//   TIM_TimeBaseStructure.TIM_Period = 0xFFFF;
//   TIM_TimeBaseStructure.TIM_Prescaler = 0x00;
//   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; 
//   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
//   TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
//   TIM_ETRClockMode2Config(TIM4, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
//   TIM_SetCounter(TIM4, 0); 
//   TIM_Cmd(TIM4, ENABLE); 
//   }

//void TIM8_PWM_Init(void)
//  {
//
//      GPIO_InitTypeDef GPIO_InitStructure;
//      TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//      TIM_OCInitTypeDef TIM_OCInitStructure;
//      RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
//    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//  
// 
//      GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
//      GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//      GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
//      GPIO_Init(GPIOC,&GPIO_InitStructure);
//
//
//    TIM_TimeBaseStructure.TIM_Period = 1000; //ÉèÖÃ×Ô¶¯ÖØ×°ÔØÖµ
//    TIM_TimeBaseStructure.TIM_Prescaler =7199; //ÉèÖÃÔ¤·ÖƵֵ
//    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //ÉèÖÃʱÖÓ·Ö¸î:TDTS = Tck_tim
//    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //ÏòÉϼÆÊýģʽ
//    TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure); //
//    
//
//    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
//    TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; //±È½ÏÊä³öʹÄÜ
//    TIM_OCInitStructure.TIM_Pulse = 0; //ÉèÖôý×°Èë²¶»ñ±È½Ï¼Ä´æÆ÷µÄÂö³åÖµ
//    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //Êä³ö¼«ÐÔ¸ß
//    TIM_OC1Init(TIM8, &TIM_OCInitStructure); //¢Û³õʼ»¯ÍâÉè TIMx
//    TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);
//
//    TIM_CtrlPWMOutputs(TIM8,ENABLE);  //¢ÝMOE Ö÷Êä³öʹÄÜ
//       
//        TIM_ARRPreloadConfig(TIM8, ENABLE); //ʹÄÜ TIMx ÔÚ ARR ÉϵÄÔ¤×°ÔØ¼Ä´æÆ÷
//        TIM_Cmd(TIM8, ENABLE); //¢ÜʹÄÜ TIM8
//  }

time.h

#ifndef _TIME_H_
#define _TIME_H_
#include "stm32f10x_tim.h"
void Motor_Init(u16 TIM2per, u16 TIM3per, u16 TIM3Compare1);
void TIM2_TIM3_PWM(u16 Cycle, u16 Pulse_Num);
void TIM1_PWM_Init(void);
void TIM8_PWM_Init(void);
//void TIM4_Init(void);
//void TIM4_Init(u16 arr,u16 psc);/////////////////10ms¶¨Ê±Æ÷   ad²É¼¯
void LED_Init(void);
#endif

usart.c

#include "sys.h"
#include "usart.h"
#include "string.h"   
#if 1
#pragma import(__use_no_semihosting)             
//±ê×¼¿âÐèÒªµÄÖ§³Öº¯Êý                 
struct __FILE 
{ 
    int handle; 

}; 

FILE __stdout;       
//¶¨Òå_sys_exit()ÒÔ±ÜÃâʹÓðëÖ÷»úģʽ    
_sys_exit(int x) 
{ 
    x = x; 
} 
//ÖØ¶¨Òåfputcº¯Êý 
int fputc(int ch, FILE *f)
{      
    while((USART1->SR&0X40)==0);//Ñ­»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï   
    USART1->DR = (u8) ch;      
    return ch;
}
#endif 

void USART1_Config(void)    //Á¬½ÓÉÏλ»ú£¬´®¿Ú1³õʼ»¯
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        USART_InitStructure.USART_BaudRate = 115200;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(USART1, &USART_InitStructure);



        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ; //ÇÀÕ¼ÓÅÏȼ¶ 0
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

       // USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

        USART_Cmd(USART1, ENABLE);
        USART_ClearFlag(USART1, USART_FLAG_TC);                //Çå´®¿Ú1·¢ËͱêÖ¾
}

 void USART2_Config(void)       //Á¬½Ó´ó32µ¥Æ¬»ú ³õʼ»¯ ÅäÖÃUSART2
{
    GPIO_InitTypeDef     GPIO_InitStructure;   //´®¿Ú¶Ë¿ÚÅäÖýṹÌå±äÁ¿
    USART_InitTypeDef    USART_InitStructure;  //´®¿Ú²ÎÊýÅäÖýṹÌå±äÁ¿
    NVIC_InitTypeDef   NVIC_InitStructure;

    //µÚ1²½£º´ò¿ªGPIOºÍUSART²¿¼þµÄʱÖÓ
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);    //´ò¿ªGPIOAʱÖÓºÍGPIOA¸´ÓÃʱÖÓ
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);  //´ò¿ª´®¿Ú¸´ÓÃʱÖÓ
    USART_DeInit(USART2);  //¸´Î»´®¿Ú1

    //µÚ2²½£º½«USART2 Tx£¨·¢Ëͽţ©µÄGPIOÅäÖÃÎªÍÆÍ츴ÓÃģʽ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;              //´®¿Ú2·¢ËͽÅ
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //Êä³öËÙ¶È50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure);                 //³õʼ»¯GPIOA

    //µÚ3²½£º½«USART2 Rx£¨½ÓÊսţ©µÄGPIOÅäÖÃΪ¸¡¿ÕÊäÈëģʽ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;              //´®¿Ú2½ÓÊÕ½Å
    //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //¸¡¿ÕÊäÈë
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //ÉÏÀ­ÊäÈë
    GPIO_Init(GPIOA, &GPIO_InitStructure);                 //³õʼ»¯GPIOA


    //µÚ4²½£ºÅäÖÃUSART1²ÎÊý
    USART_InitStructure.USART_BaudRate             = 9600;                           //²¨ÌØÂÊÉèÖãº57600
    USART_InitStructure.USART_WordLength           = USART_WordLength_8b;            //Êý¾ÝλÊýÉèÖãº8λ
    USART_InitStructure.USART_StopBits             = USART_StopBits_1;               //ֹͣλÉèÖãº1λ
    USART_InitStructure.USART_Parity               = USART_Parity_No;                //ÊÇ·ñÆæÅ¼Ð£Ñ飺ÎÞ
    USART_InitStructure.USART_HardwareFlowControl  = USART_HardwareFlowControl_None; //Ó²¼þÁ÷¿ØÖÆÄ£Ê½ÉèÖãºÃ»ÓÐʹÄÜ
    USART_InitStructure.USART_Mode                 = USART_Mode_Rx | USART_Mode_Tx;  //½ÓÊÕÓë·¢ËͶ¼Ê¹ÄÜ
    USART_Init(USART2, &USART_InitStructure);                                        //³õʼ»¯USART2
    NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ; //ÇÀÕ¼ÓÅÏȼ¶ 3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //×ÓÓÅÏȼ¶ 3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ ͨµÀʹÄÜ
    NVIC_Init(&NVIC_InitStructure);  //ÖжÏÓÅÏȼ¶³õʼ»¯

    //´ò¿ª·¢ËÍÖжϺͽÓÊÕÖжÏ(Èç¹ûÐèÒªÖжÏ)
    //USART_ITConfig(USART2, USART_IT_TXE, ENABLE);  // ʹÄÜÖ¸¶¨µÄUSART1·¢ËÍÖÐ¶Ï £»
    USART_ITConfig(USART2, USART_IT_RXNE, ENABLE); // ʹÄÜÖ¸¶¨µÄUSART1½ÓÊÕÖÐ¶Ï £»

    //µÚ5²½£ºÊ¹ÄÜ USART2£¬ ÅäÖÃÍê±Ï
    USART_Cmd(USART2, ENABLE);                             //ʹÄÜ USART2

    //ÈçÏÂÓï¾ä½â¾öµÚ1¸ö×Ö½ÚÎÞ·¨ÕýÈ··¢ËͳöÈ¥µÄÎÊÌâ
    USART_ClearFlag(USART2, USART_FLAG_TC);                //Çå´®¿Ú2·¢ËͱêÖ¾

}

void USART3_Config(void)        //³õʼ»¯ ÅäÖÃUSART3  Arduino
{
    GPIO_InitTypeDef     GPIO_InitStructure;   //´®¿Ú¶Ë¿ÚÅäÖýṹÌå±äÁ¿
    USART_InitTypeDef    USART_InitStructure;  //´®¿Ú²ÎÊýÅäÖýṹÌå±äÁ¿
    NVIC_InitTypeDef   NVIC_InitStructure;
//
//  //µÚ1²½£º´ò¿ªGPIOºÍUSART²¿¼þµÄʱÖÓ
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);    //´ò¿ªGPIOʱÖÓºÍGPIO¸´ÓÃʱÖÓ
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);  //´ò¿ª´®¿Ú¸´ÓÃʱÖÓ
    USART_DeInit(USART3);  //¸´Î»´®¿Ú3
    //µÚ2²½£º½«USART3 Tx£¨·¢Ëͽţ©µÄGPIOÅäÖÃÎªÍÆÍ츴ÓÃģʽ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;             //´®¿Ú3·¢ËͽÅ
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //Êä³öËÙ¶È50MHz
    GPIO_Init(GPIOB, &GPIO_InitStructure);                 //³õʼ»¯GPIOB
//                                                        
    //µÚ3²½£º½«USART3 Rx£¨½ÓÊսţ©µÄGPIOÅäÖÃΪ¸¡¿ÕÊäÈëģʽ
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;             //´®¿Ú3½ÓÊÕ½Å
    //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //¸¡¿ÕÊäÈë
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //ÉÏÀ­ÊäÈë
    GPIO_Init(GPIOB, &GPIO_InitStructure);                 //³õʼ»¯GPIOB
//
//
    //µÚ4²½£ºÅäÖÃUSART1²ÎÊý
    USART_InitStructure.USART_BaudRate             = 115200;                             //²¨ÌØÂÊÉèÖãº115200
    USART_InitStructure.USART_WordLength           = USART_WordLength_8b;            //Êý¾ÝλÊýÉèÖãº8λ
    USART_InitStructure.USART_StopBits             = USART_StopBits_1;               //ֹͣλÉèÖãº1λ
    USART_InitStructure.USART_Parity               = USART_Parity_No;                //ÊÇ·ñÆæÅ¼Ð£Ñ飺ÎÞ
    USART_InitStructure.USART_HardwareFlowControl  = USART_HardwareFlowControl_None; //Ó²¼þÁ÷¿ØÖÆÄ£Ê½ÉèÖãºÃ»ÓÐʹÄÜ
    USART_InitStructure.USART_Mode                 = USART_Mode_Rx | USART_Mode_Tx;  //½ÓÊÕÓë·¢ËͶ¼Ê¹ÄÜ
    USART_Init(USART3, &USART_InitStructure);                                        //³õʼ»¯USART3
    NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //ÇÀÕ¼ÓÅÏȼ¶ 3
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //×ÓÓÅÏȼ¶ 3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ ͨµÀʹÄÜ
    NVIC_Init(&NVIC_InitStructure);  //ÖжÏÓÅÏȼ¶³õʼ»¯
//
   //´ò¿ª·¢ËÍÖжϺͽÓÊÕÖжÏ(Èç¹ûÐèÒªÖжÏ)
//  //USART_ITConfig(USART3, USART_IT_TXE, ENABLE);  // ʹÄÜÖ¸¶¨µÄUSART3·¢ËÍÖÐ¶Ï £»
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); // ʹÄÜÖ¸¶¨µÄUSART3½ÓÊÕÖÐ¶Ï £»
//
//  //µÚ5²½£ºÊ¹ÄÜ USART2£¬ ÅäÖÃÍê±Ï
    USART_Cmd(USART3, DISABLE);                            //¹Ø±Õ USART3
//
   //ÈçÏÂÓï¾ä½â¾öµÚ1¸ö×Ö½ÚÎÞ·¨ÕýÈ··¢ËͳöÈ¥µÄÎÊÌâ
   USART_ClearFlag(USART3, USART_FLAG_TC);                //Çå´®¿Ú3·¢ËͱêÖ¾

}
//
//void UART4_Config(void)       //³õʼ»¯ ÅäÖÃUART4      Á¬½Ómini stm32
//{
//  GPIO_InitTypeDef     GPIO_InitStructure;   //´®¿Ú¶Ë¿ÚÅäÖýṹÌå±äÁ¿
//  USART_InitTypeDef    USART_InitStructure;  //´®¿Ú²ÎÊýÅäÖýṹÌå±äÁ¿
//  NVIC_InitTypeDef   NVIC_InitStructure;
//
//  //µÚ1²½£º´ò¿ªGPIOºÍUSART²¿¼þµÄʱÖÓ
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    //´ò¿ªGPIOCʱÖÓ
//  //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);  //´ò¿ªGPIODʱÖÓ
//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE);   //´ò¿ª´®¿Ú5¸´ÓÃʱÖÓ
//  USART_DeInit(UART4);  //¸´Î»´®¿Ú5
//
//  //µÚ2²½£º½«UART4 Tx£¨·¢Ëͽţ©µÄGPIOÅäÖÃÎªÍÆÍ츴ÓÃģʽ
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;             //´®¿Ú5·¢ËͽÅ
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //Êä³öËÙ¶È50MHz
//  GPIO_Init(GPIOC, &GPIO_InitStructure);                 //³õʼ»¯GPIOA
//                                                        
//  //µÚ3²½£º½«UART4 Rx£¨½ÓÊսţ©µÄGPIOÅäÖÃΪ¸¡¿ÕÊäÈëģʽ
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;             //´®¿Ú4½ÓÊÕ½Å
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //¸¡¿ÕÊäÈë
//  //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉÏÀ­ÊäÈë
//  GPIO_Init(GPIOC, &GPIO_InitStructure);                 //³õʼ»¯GPIOD
//
//
//  //µÚ4²½£ºÅäÖÃUSART4²ÎÊý
//  USART_InitStructure.USART_BaudRate             = 57600;                          //²¨ÌØÂÊÉèÖãº115200
//  USART_InitStructure.USART_WordLength           = USART_WordLength_8b;            //Êý¾ÝλÊýÉèÖãº8λ
//  USART_InitStructure.USART_StopBits             = USART_StopBits_1;               //ֹͣλÉèÖãº1λ
//  USART_InitStructure.USART_Parity               = USART_Parity_No;                //ÊÇ·ñÆæÅ¼Ð£Ñ飺ÎÞ
//  USART_InitStructure.USART_HardwareFlowControl  = USART_HardwareFlowControl_None; //Ó²¼þÁ÷¿ØÖÆÄ£Ê½ÉèÖãºÃ»ÓÐʹÄÜ
//  USART_InitStructure.USART_Mode                 = USART_Mode_Rx | USART_Mode_Tx;  //½ÓÊÕÓë·¢ËͶ¼Ê¹ÄÜ
//  USART_Init(UART4, &USART_InitStructure);                                         //³õʼ»¯USART2
//  NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;
//  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //ÇÀÕ¼ÓÅÏȼ¶ 3
//  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //×ÓÓÅÏȼ¶ 3
//  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ ͨµÀʹÄÜ
//  NVIC_Init(&NVIC_InitStructure);  //ÖжÏÓÅÏȼ¶³õʼ»¯
//
//    //´ò¿ª·¢ËÍÖжϺͽÓÊÕÖжÏ(Èç¹ûÐèÒªÖжÏ)
//  
//      //USART_ITConfig(UART4, USART_IT_RXNE, ENABLE); 
//
//  //µÚ5²½£ºÊ¹ÄÜ USART2£¬ ÅäÖÃÍê±Ï
//  USART_Cmd(UART4, ENABLE);                              //ʹÄÜ UART4
//
//    //ÈçÏÂÓï¾ä½â¾öµÚ1¸ö×Ö½ÚÎÞ·¨ÕýÈ··¢ËͳöÈ¥µÄÎÊÌâ
//    USART_ClearFlag(UART4, USART_FLAG_TC);                //Çå´®¿Ú4·¢ËͱêÖ¾
//  
//}
//
//void UART5_Config(void)       //³õʼ»¯ ÅäÖÃUSART5    µç×ÓÂÞ¾­
//{
//  GPIO_InitTypeDef     GPIO_InitStructure;   //´®¿Ú¶Ë¿ÚÅäÖýṹÌå±äÁ¿
//  USART_InitTypeDef    USART_InitStructure;  //´®¿Ú²ÎÊýÅäÖýṹÌå±äÁ¿
//  NVIC_InitTypeDef   NVIC_InitStructure;
//
//  //µÚ1²½£º´ò¿ªGPIOºÍUSART²¿¼þµÄʱÖÓ
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    //´ò¿ªGPIOCʱÖÓ
//  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);    //´ò¿ªGPIODʱÖÓ
//  RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5, ENABLE);   //´ò¿ª´®¿Ú5¸´ÓÃʱÖÓ
//  USART_DeInit(UART5);  //¸´Î»´®¿Ú5
//
//  //µÚ2²½£º½«UART5 Tx£¨·¢Ëͽţ©µÄGPIOÅäÖÃÎªÍÆÍ츴ÓÃģʽ
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;             //´®¿Ú5·¢ËͽÅ
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸´ÓÃÍÆÍìÊä³ö
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //Êä³öËÙ¶È50MHz
//  GPIO_Init(GPIOC, &GPIO_InitStructure);                 //³õʼ»¯GPIOA
//                                                        
//  //µÚ3²½£º½«UART5 Rx£¨½ÓÊսţ©µÄGPIOÅäÖÃΪ¸¡¿ÕÊäÈëģʽ
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;              //´®¿Ú5½ÓÊÕ½Å
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //¸¡¿ÕÊäÈë
//  //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //ÉÏÀ­ÊäÈë
//  GPIO_Init(GPIOD, &GPIO_InitStructure);                 //³õʼ»¯GPIOD
//
//
//  //µÚ4²½£ºÅäÖÃUSART5²ÎÊý
//  USART_InitStructure.USART_BaudRate             = 9600;                           //²¨ÌØÂÊÉèÖãº115200
//  USART_InitStructure.USART_WordLength           = USART_WordLength_8b;            //Êý¾ÝλÊýÉèÖãº8λ
//  USART_InitStructure.USART_StopBits             = USART_StopBits_1;               //ֹͣλÉèÖãº1λ
//  USART_InitStructure.USART_Parity               = USART_Parity_No;                //ÊÇ·ñÆæÅ¼Ð£Ñ飺ÎÞ
//  USART_InitStructure.USART_HardwareFlowControl  = USART_HardwareFlowControl_None; //Ó²¼þÁ÷¿ØÖÆÄ£Ê½ÉèÖãºÃ»ÓÐʹÄÜ
//  USART_InitStructure.USART_Mode                 = USART_Mode_Rx | USART_Mode_Tx;  //½ÓÊÕÓë·¢ËͶ¼Ê¹ÄÜ
//  USART_Init(UART5, &USART_InitStructure);                                         //³õʼ»¯USART2
//  NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;
//  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //ÇÀÕ¼ÓÅÏȼ¶ 3
//  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //×ÓÓÅÏȼ¶ 3
//  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ ͨµÀʹÄÜ
//  NVIC_Init(&NVIC_InitStructure);  //ÖжÏÓÅÏȼ¶³õʼ»¯
//
//    //´ò¿ª·¢ËÍÖжϺͽÓÊÕÖжÏ(Èç¹ûÐèÒªÖжÏ)
//  //USART_ITConfig(USART2, USART_IT_TXE, ENABLE);  // ʹÄÜÖ¸¶¨µÄUSART1·¢ËÍÖÐ¶Ï £»
//      USART_ITConfig(UART5, USART_IT_RXNE, ENABLE); // ʹÄÜÖ¸¶¨µÄUSART1½ÓÊÕÖÐ¶Ï £»
//
//  //µÚ5²½£ºÊ¹ÄÜ USART2£¬ ÅäÖÃÍê±Ï
//  USART_Cmd(UART5, ENABLE);                              //ʹÄÜ UART5
//
//    //ÈçÏÂÓï¾ä½â¾öµÚ1¸ö×Ö½ÚÎÞ·¨ÕýÈ··¢ËͳöÈ¥µÄÎÊÌâ
//    USART_ClearFlag(UART5, USART_FLAG_TC);                //Çå´®¿Ú5·¢ËͱêÖ¾
//  
//}





usart.h

#ifndef __USART_H
#define __USART_H
#include "stdio.h"  
#include "sys.h" 

#define USART_REC_LEN           200     //¶¨Òå×î´ó½ÓÊÕ×Ö½ÚÊý 200
#define EN_USART1_RX            1       //ʹÄÜ£¨1£©/½ûÖ¹£¨0£©´®¿Ú1½ÓÊÕ

extern u8  USART_RX_BUF[USART_REC_LEN]; //½ÓÊÕ»º³å,×î´óUSART_REC_LEN¸ö×Ö½Ú.Ä©×Ö½ÚΪ»»Ðзû 
extern u16 USART_RX_STA;                //½ÓÊÕ״̬±ê¼Ç  
void USART2_Send(u8* buf, u16 len);
void USART1_Config(void);
void USART2_Config(void);
void USART3_Config(void);
void UART4_Config(void);
void UART5_Config(void);
#endif


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andrewbytecoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值