完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
基本设置
串口回环: 串口IO设置 IO的配置: void gd_eval_com_init(uint32_t com) { /* enable GPIO clock */ uint32_t COM_ID; if(EVAL_COM1 == com) { COM_ID = 0U; } rcu_periph_clock_enable( EVAL_COM_GPIO_CLK); /* enable USART clock */ rcu_periph_clock_enable(COM_CLK[COM_ID]); /* connect port to USARTx_Tx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_TX_PIN[COM_ID]); /* connect port to USARTx_Rx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_RX_PIN[COM_ID]); /* configure USART Tx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_TX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_TX_PIN[COM_ID]); /* configure USART Rx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_RX_PIN[COM_ID]); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_RX_PIN[COM_ID]); /* USART configure */ usart_deinit(com); usart_baudrate_set(com,115200U); usart_receive_config(com, USART_RECEIVE_ENABLE); usart_transmit_config(com, USART_TRANSMIT_ENABLE); usart_enable(com); nvic_irq_enable(USART1_IRQn, 0, 0); } 配置的是COM1; PA2 —TX ; PA3 — RX; 串口1 PA9、PA10不知道为什么实现不了;在GD32450Demo板上实现不了; 接收设置 接收可中断接收、也可以论询接收; 中断接收 注意在中断中接收的话: 要打开NVIC并设置USART1的优先级; nvic_irq_enable(USART1_IRQn, 0, 0); 基本配置 : 设置能发送、能接收; 波特率、停止位; 中断接收: 接收重点是要打开串口函数: 一旦有数据就会有串口中断, usart_interrupt_enable(USART1 , USART_INTEN_RBNEIE); 然后在中断中接收: void USART1_IRQHandler(void) { unsigned char data; if(RESET != usart_interrupt_flag_get(USART1, USART_INT_RBNEIE)) { data = usart_data_receive(USART1); usart_data_transmit(USART1, (uint8_t)data); while(RESET == usart_flag_get(USART1, USART_FLAG_TBE)); } } 接收又回复之后立马回复、完成回环测试;; 论询接收 就是不打开中断 要在程序中论询: 一直查询接收buff是否是为空状态; if(RESET != usart_interrupt_flag_get(USART1, USART_INT_RBNEIE)) { data = usart_data_receive(USART1); usart_data_transmit(USART1, (uint8_t)data); while(RESET == usart_flag_get(USART1, USART_FLAG_TBE)); } |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 14:51 , Processed in 1.342044 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号