Demo_Code
串口部分:
void my_uart_init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_USART0);
gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_9);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
gpio_mode_set(GPIOA,GPIO_MODE_AF,GPIO_PUPD_PULLUP,GPIO_PIN_10);
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
nvic_irq_enable(USART0_IRQn,0,0);
gpio_af_set(GPIOA,GPIO_AF_1,GPIO_PIN_9|GPIO_PIN_10);
usart_deinit(USART0);
usart_baudrate_set(USART0,115200);
usart_word_length_set(USART0,USART_WL_8BIT);
usart_stop_bit_set(USART0,USART_STB_1BIT);
usart_parity_config(USART0,USART_PM_NONE);
usart_hardware_flow_rts_config(USART0,USART_RTS_DISABLE);
usart_hardware_flow_cts_config(USART0,USART_CTS_DISABLE);
usart_receive_config(USART0,USART_RECEIVE_ENABLE);
usart_transmit_config(USART0,USART_TRANSMIT_ENABLE);
usart_enable(USART0);
usart_interrupt_enable(USART0,USART_INT_RBNE);
usart_interrupt_enable(USART0, USART_INT_IDLE);
}
void USART0_IRQHandler(void)
{
if(RESET
{
DATA=usart_data_receive(USART0);//rec data
usart_data_transmit(USART0,DATA);
}else if(RESET
{
usart_interrupt_disable(USART0,USART_INT_IDLE);
}
}
/ * retarget the C library printf function to the USART * /
int fputc(int ch, FILE *f)
{
usart_data_transmit(USART0, (uint8_t) ch)
while(RESET == usart_flag_get(USART0, USART_FLAG_TBE))
return ch
}
主函数部分:
void gd_led_config(void);
void gd_led_toggle(void);
/*!
\brief main function
\param[in] none
\param[out] none
\retval none
*/
int main(void)
{
gd_led_config();
systick_config();
my_uart_init();
my_radar_init();
while(1) {
if(AC_Signal_val>threshold_val+DC_Signal_val)
{
gpio_bit_set(GPIOA,GPIO_PIN_1);
FAX_LOG("Warning!\n");
delay_1ms(1000);
}
else
gpio_bit_reset(GPIOA,GPIO_PIN_1);
FAX_LOG("No One!\n");
delay_1ms(1000);
}
}
/*!
\brief configure led
\param[in] none
\param[out] none
\retval none
*/
void gd_led_config(void)
{
/* enable the led clock */
rcu_periph_clock_enable(RCU_GPIOA)
/* configure led GPIO port */
gpio_mode_set(GPIOA, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_1)
gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1)
GPIO_BC(GPIOA) = GPIO_PIN_1
}
/*!
\brief toggle led
\param[in] none
\param[out] none
\retval none
*/
void gd_led_toggle(void)
{
GPIO_TG(GPIOA) = GPIO_PIN_1
}
`
硬件连接&实现效果
将雷达模组和测评板,手拿着雷达模组不动,串口打印无触发状态,同时板载led处于关闭状态。
将雷达模组和测评板,手拿着雷达模组,另一只手挥动,串口打印警告状态表示有触发目标,同时板载led处于长亮状态。
可以看到串口打印的数据如下:
![串口输出.png 串口输出.png](//file.elecfans.com/web2/M00/6E/04/pYYBAGM2ZdyAdV8QAAH-5c2_M-U092.jpg)
总结:
使用国产GD32F310配合微波雷达模块做一些简单应用,所提供的资料对开发者来说还是蛮友好的,也希望国产MCU更上一层楼。
原作者:忍者神憋