/************************************************************************************************/ /** * @file main.c * @author MCU Ecosystem Development Team * @brief 该示例展示的SN模块用法。 * * ************************************************************************************************** * @attention * Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved. * ************************************************************************************************** */ /*------------------------------------------includes--------------------------------------------*/ #include "main.h" #include "common.h" #include "SN_GPIO.h" #include "SN_ADC.h" #include "SN_PWM.h" #include "SN_EXIT.h" #include "SN_TIM3_INIT.h" #include "SN_TIM1_INIT.h" #include "SN_UART.h" #include "SN_FLASH.h" #include "SN_RCC.h" #include "SN_SPI.h" #include "SN_DDQ.h" #include "i2c_bsp.h" #include "SN_STOP.h" #include #include "myRadio.h" #include "pan_rf.h" /*------------------------------------------functions-------------------------------------------*/ #define BOARD_PIN_MOTOR GPIO_PIN_6 // #define BOARD_PORT_MOTOR GPIOA // #define BOARD_GPIO_MOTOR BOARD_PORT_MOTOR, BOARD_PIN_MOTOR // uint16_t ADC_VAL = 0; float MCU_VDD = 0; void rfRx_callback(uint8_t status, rfRxPacket_ts packet) { switch (status) { case RX_STA_SECCESS: { printf("receive data:%s\r\n", packet.payload); RF_SetPreamLen(RF_PREAMBLE_DEFAULT); myRadio_receiver(); motor_long(); } break; case RX_STA_TIMEOUT: { RF_SetPreamLen(RF_PREAMBLE_DEFAULT); myRadio_receiver(); } break; case RX_STA_PAYLOAD_ERROR: { RF_SetPreamLen(RF_PREAMBLE_DEFAULT); myRadio_receiver(); } break; case TX_STA_SECCESS: { RF_SetPreamLen(RF_PREAMBLE_DEFAULT); myRadio_receiver(); motor_short(); } break; default: break; } } void motor_short(void) { SN_GPIO_PIN_write(BOARD_GPIO_MOTOR, 1); std_delayms(50); SN_GPIO_PIN_write(BOARD_GPIO_MOTOR, 0); } void motor_long(void) { SN_GPIO_PIN_write(BOARD_GPIO_MOTOR, 1); std_delayms(200); SN_GPIO_PIN_write(BOARD_GPIO_MOTOR, 0); } uint32_t sendTimeout = 0; int main(void) { SN_SYSCLK_set(SYSCLK_48MHZ); //设置系统时钟为48MHZ std_delay_init(); //初始化延时(该延时是使用滴答定时器实现的) std_delayms(500); SN_UART_init(UART1,921600, UART1_RX_PA2, UART1_TX_PB6); //初始化串口 printf("uart init\r\n"); myRadio_init(0, rfRx_callback); SN_GPIO_PIN_init(BOARD_GPIO_MOTOR , GPIO_MODE_OUTPUT ,GPIO_PULLUP ,GPIO_OUTPUT_PUSHPULL); motor_long(); // myRadio_setFrequency(SET_RF_FREQ_HZ(rfBaseFreqList[deviceInfor.chipType], deviceInfor.rfChannel, deviceInfor.channelStep)); // myRadio_setTxPower(rfTxPowerList[deviceInfor.txPower]); // myRadio_setRfParams(deviceInfor.rf_sf, deviceInfor.rf_bw, deviceInfor.rf_cr); // myRadio_setSyncWord(0x45); // myRadio_receiver(); // std_delayms(500); // myRadio_transmitArray("hello world", 10); // SN_ADC_IN_init(ADC_CHANNEL_4_PA7); //初始化ADC // SN_PWM_TIM1_OUT_Complementary(TIM1_CH2N_PA0); //设置互补通道,注意要先设定互补通道后,才能初始化pwm输出 // SN_PWM_TIM1_OUT_init(TIM1_CH2_PA1,1000); //设置定时器3通道1 和 通道2 输出占空比数是1000的方波,输出io分别是PA0 ,PA4 // SN_UART_init(UART1,9600, UART1_RX_PA4 ,UART1_TX_PA3 ); //初始化串口 printf("power on\r\n"); while(1){ std_delayms(1); // SN_ADC_start(); //此时编译的SN_ADC_star()是轮询处理 // ADC_VAL = SN_ADC_Get_float(0); //PA7通道电压值 // MCU_VDD = SN_ADC_MCU_VDD(); //获取MCU的当前vdd电压 if (sendTimeout++ > 1000+rand()%100) { sendTimeout = 0; RF_SetPreamLen(50); myRadio_transmitArray("hello world", 10); printf("send rf data\r\n"); } myRadio_process(); } }