#ifndef _IRDA_H_ #define _IRDA_H_ #include "stm32f10x_gpio.h" enum { CHECK_ODD, CHECK_EVEN, CHECK_NONE, }; #define IRDA_BAUD 1200 #define IRDA_DATABITS 8 #define IRDA_CHECKBIT CHECK_EVEN #define IRDA_STOPBIT 1 #define IRDA_BAUD_TIMER TIM3 #define IRDA_BAUD_TIMER_CLK RCC_APB1Periph_TIM3 #define IRDA_BAUD_IRQHandler TIM3_IRQHandler #define IRDA_BAUD_PRESC 100 #define IRDA_BAUD_PERIOD (SystemCoreClock/IRDA_BAUD_PRESC/IRDA_BAUD) #define IRDA_TX_PIN GPIO_Pin_0 #define IRDA_TX_PORT GPIOA #define IRDA_TX_PORT_CLK RCC_APB2Periph_GPIOA #define IRDA_RX_PIN GPIO_Pin_1 #define IRDA_RX_PORT GPIOC #define IRDA_RX_PORT_CLK RCC_APB2Periph_GPIOC #define IRDA_RX_PORT_SOURCE GPIO_PortSourceGPIOC #define IRDA_RX_PIN_SOURCE GPIO_PinSource1 #define IRDA_RX_LINE EXTI_Line1 #define RX_START_IRQHandler EXTI1_IRQHandler #define IRDA_RX_BIT_VAL GPIO_ReadInputDataBit(IRDA_RX_PORT, IRDA_RX_PIN) #define IRDA_TX_BUFFER_SIZE 255 #define IRDA_RX_BUFFER_SIZE 255 #define PWM_TIMER TIM2 #define PWM_TIMER_CLK RCC_APB1Periph_TIM2 #define PWM_TIMER_CHANNEL 1 #define PWM_PRESC 100 #define PWM_FRE 38000 #define PWM_PERIOD (SystemCoreClock/PWM_FRE/PWM_PRESC) #define IRDA_BAUD_COFF ((11.0 * 1000.0) / IRDA_BAUD) void IRDA_PWM_Init(); void IRDA_GPIO_RX_init(void); void IRDA_TX(u8 *buf, u8 length); void baud_timer_init(u32 preriod); void create_IRDA_task(void); #endif