783|2

107

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

CLM32L003 串口波特率问题解决 [复制链接]

1、芯片问题  

      CLM32L003 串口波特率115200 设置无效

2、手册描述

 

 

 

 

 

                     DBAUD  寄存器需要设置为双波特率

3、代码修改

 

/**
  * [url=home.php?mod=space&uid=159083]@brief[/url] UART Init Structure definition
  */
typedef struct
{
  uint32_t BaudRate;                  /*!< This member configures the UART communication baud rate.
                                           The baud rate is computed using the following formula:
                                           - IntegerDivider = ((PCLKx) / (16 * (huart->Init.BaudRate)))
                                           - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */

	uint32_t BaudDouble;                /*!< Specifies whether baudrate is doubled.
                                           This parameter can be a value of [url=home.php?mod=space&uid=1064992]@ref[/url] UART_BaudDouble */	
	
	uint32_t HalfDuplexMode;						/*!< Specifies whether halfduplex mode is enabled.
                                           This parameter can be a value of @ref UART_HalfDuplex */	
	
  uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.
                                           This parameter can be a value of @ref UART_Word_Length */	
	
  uint32_t Parity;                    /*!< Specifies the parity mode.
                                           This parameter can be a value of @ref UART_Parity
                                           @note When parity is enabled, the computed parity is set
                                                 at the MSB position of the transmitted data (9th bit only when
                                                 the word length is set to 9 data bits;*/	
	
  uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.
                                           This parameter can be a value of @ref UART_Mode */

}UART_InitTypeDef;

BaudDouble   :指定波特率是否加倍

 

#define UART_BAUDDOUBLE_ENABLE              ((uint32_t)UART_SCON_DBAUD)
#define UART_BAUDDOUBLE_DISABLE             (0x00000000U)

可以使用这两个宏函数

 

 

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();		
	
  /* Configure the system clock to HIRC 24MHz*/
  SystemClock_Config();
			
  /* Peripheral clock enable */
  __HAL_RCC_UARTx_CLK_ENABLE();	
	
	sUartxHandle.Instance = UARTx;
	sUartxHandle.Init.BaudRate = BAUDRATE;
	sUartxHandle.Init.BaudDouble = UART_BAUDDOUBLE_ENABLE;	
	sUartxHandle.Init.WordLength = UART_WORDLENGTH_8B;
	sUartxHandle.Init.Parity = UART_PARITY_NONE;
	sUartxHandle.Init.Mode = UART_MODE_TX_RX;
	HAL_UART_Init(&sUartxHandle);
	
	HAL_UART_Transmit_IT(&sUartxHandle, ucSendData, sizeof(ucSendData));
	HAL_UART_Receive_IT(&sUartxHandle, ucReceiveData, sizeof(ucReceiveData));	
	HAL_NVIC_EnableIRQ(UARTx_IRQn);
	
  while (1)
	{
		/* UART receive LENGTH datas then transmit the received datas */		
		if(ucRxCompleteFlag == 1)
		{
			ucRxCompleteFlag = 0;
			HAL_UART_Transmit_IT(&sUartxHandle, ucReceiveData, sizeof(ucReceiveData));	
			HAL_UART_Receive_IT(&sUartxHandle, ucReceiveData, sizeof(ucReceiveData));				
		}
	}
}

 

此帖出自单片机论坛

最新回复

是串口初始化问题吗?  详情 回复 发表于 2024-1-22 19:42
点赞 关注
 

回复
举报

229

帖子

3

TA的资源

一粒金砂(高级)

沙发
 

是串口初始化问题吗?


此帖出自单片机论坛

点评

115200的波特率的设置  详情 回复 发表于 2024-1-23 11:10
 
 

回复

107

帖子

1

TA的资源

一粒金砂(高级)

板凳
 
Maker_kun 发表于 2024-1-22 19:42 是串口初始化问题吗?

115200的波特率的设置

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表