Files
HBshuiwuConcentrator/APP/IrDA.h
2025-12-15 16:07:49 +08:00

59 lines
1.7 KiB
C

#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