完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
什么单片机?按照下面这样进行设置,不过STM32的RTT库和HAL库只支持1个或2个停止位。
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; // 初始化配置参数 115200 8n1 rt_device_t serial; serial = rt_device_find("uart2"); rt_device_open(serial, RT_DEVICE_FLAG_INT_RX); config.stop_bits = STOP_BITS_1; // 设置停止位,目前STM32只支持1个或2个停止位 rt_device_control(serial;, RT_DEVICE_CTRL_CONFIG, &config); // 控制串口设备参数 在文件 driversdrv_usart.c 中的 switch (cfg->stop_bits) 部分限制了停止位的取值范围,如下所示 static rt_err_t stm32_configure(struct rt_serial_device *serial, struct serial_configure *cfg) { struct stm32_uart *uart; RT_ASSERT(serial != RT_NULL); RT_ASSERT(cfg != RT_NULL); uart = rt_container_of(serial, struct stm32_uart, serial); /* uart clock enable */ stm32_uart_clk_enable(uart->config); /* uart gpio clock enable and gpio pin init */ stm32_gpio_configure(uart->config); uart->handle.Instance = uart->config->Instance; uart->handle.Init.BaudRate = cfg->baud_rate; uart->handle.Init.HwFlowCtl = UART_HWCONTROL_NONE; uart->handle.Init.Mode = UART_MODE_TX_RX; uart->handle.Init.OverSampling = UART_OVERSAMPLING_16; switch (cfg->data_bits) { case DATA_BITS_8: uart->handle.Init.WordLength = UART_WORDLENGTH_8B; break; case DATA_BITS_9: uart->handle.Init.WordLength = UART_WORDLENGTH_9B; break; default: uart->handle.Init.WordLength = UART_WORDLENGTH_8B; break; } switch (cfg->stop_bits) { case STOP_BITS_1: uart->handle.Init.StopBits = UART_STOPBITS_1; break; case STOP_BITS_2: uart->handle.Init.StopBits = UART_STOPBITS_2; break; default: uart->handle.Init.StopBits = UART_STOPBITS_1; break; } switch (cfg->parity) { case PARITY_NONE: uart->handle.Init.Parity = UART_PARITY_NONE; break; case PARITY_ODD: uart->handle.Init.Parity = UART_PARITY_ODD; break; case PARITY_EVEN: uart->handle.Init.Parity = UART_PARITY_EVEN; break; default: uart->handle.Init.Parity = UART_PARITY_NONE; break; } if (HAL_UART_Init(&uart->handle) != HAL_OK) { return -RT_ERROR; } return RT_EOK; } 如果使用1.5个停止位需要自己修改一下源码,将1.5个停止位的代码加上。加在 switch (cfg->stop_bits) 部分。 /** @defgroup UART_Stop_Bits UART Number of Stop Bits * @{ */ #define UART_STOPBITS_1 0x00000000U #define UART_STOPBITS_2 ((uint32_t)USART_CR2_STOP_1) |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1126 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】串口测试标准输入输出重定向
1073 浏览 0 评论
3465 浏览 0 评论
1686 浏览 0 评论
【英飞凌PSoC 6 RTT开发板试用】以搭积木方式实现简单的互联型家庭网关
1437 浏览 0 评论
51483 浏览 21 评论
【参与有奖】激扬代码,千元现金!RT-Thread主题征文大赛
56643 浏览 88 评论
15723 浏览 51 评论
野火 ISO STM32资料合集(程序、原理图、项目初高级篇)
17915 浏览 46 评论
271511 浏览 72 评论
49060 浏览 30 评论
175373 浏览 48 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 02:44 , Processed in 0.448656 second(s), Total 67, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号