STM32 LL库踩坑系列四(SPI和UART随记)

12 篇文章 1 订阅
4 篇文章 8 订阅

STM32 LL库踩坑系列四(SPI和UART随记)

这个作者很懒,想到什么就写什么!

写在前面:这个是记录学习LL库的踩坑系列,这个资料很少,想要找例程可以在电脑用户文件下的STM32Cube\Repository里,前提是下载好那个单片机的pack,部分没有例程的可以借鉴同系列的文件。

生成的代码还需要添加
SPI添加

LL_SPI_Enable();

加一个SPI读写共用函数

uint8_t SPI1_ReadWriteByte(uint8_t TxData)
{		
	uint8_t retry = 0;				 
 
	/* Check if Tx buffer is empty */
	while (!LL_SPI_IsActiveFlag_TXE(SPI1)) 
	{
		retry++;
		if(retry > 200) return 0;
	}			  
 
	/* Write character in Data register.
	TXE flag is cleared by reading data in DR register */
	LL_SPI_TransmitData8(SPI1, TxData);
	retry = 0;
 
	/* Check if Rx buffer is not empty */
	while (!LL_SPI_IsActiveFlag_RXNE(SPI1)) 
	{
		retry++;
		if(retry > 200) return 0;
	}	  						    
 
	/* received byte from SPI lines. */
	return LL_SPI_ReceiveData8(SPI1); 				    
}

注意STM32F302系列的需要增加才能正常运行

LL_SPI_SetRxFIFOThreshold(SPI1, LL_SPI_RX_FIFO_TH_QUARTER);

UART添加函数

如果配置为中断接收模式

一. 使能中断接收

  /* Clear Overrun flag, in case characters have already been sent to USART */
  LL_USART_ClearFlag_ORE();
  
  /* Enable RXNE and Error interrupts */
  LL_USART_EnableIT_RXNE();

二. 添加中断处理函数

/**
  * @brief  Function called from USART IRQ Handler when RXNE flag is set
  *         Function is in charge of reading character received on USART RX line.
  * @param  None
  * @retval None
  */
void USART1_CharReception_Callback(void)
{
  __IO uint8_t received_char;

  /* Read Received character. RXNE flag is cleared by reading of RDR register */
  received_char = LL_USART_ReceiveData8(USART1);
	
}

三. 在对应的中断函数文件下

/**
  * @brief This function handles USART1 global interrupt.
  */
void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
  /* Check RXNE flag value in SR register */
  if(LL_USART_IsActiveFlag_RXNE(USART1) && LL_USART_IsEnabledIT_RXNE(USART1))
  {
    /* RXNE flag will be cleared by reading of DR register (done in call) */
    /* Call function in charge of handling Character reception */
    USART1_CharReception_Callback();
  }
  /* USER CODE END USART1_IRQn 0 */
  /* USER CODE BEGIN USART1_IRQn 1 */

  /* USER CODE END USART1_IRQn 1 */
}

加一个串口发送的

unsigned short int UART_W(USART_TypeDef *USARTx,unsigned char *pbuf,unsigned short int len)
{
	while (len--)
	{
		LL_USART_TransmitData8(USARTx, *pbuf);
		while (!LL_USART_IsActiveFlag_TXE(USARTx));
		pbuf ++ ;
	}

	return len ;
}
  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32LL是STMicroelectronics(意法半导体)为其32位ARM Cortex-M系列微控制器提供的专用低级别。 STMicroelectronics是一家全球领先的半导体制造商,其产品系列包括各种应用领域的微控制器和微处理器。STM32系列是STMicroelectronics的32位ARM Cortex-M系列微控制器产品系列,广泛应用于各个行业和领域。 STM32LL是专为STM32微控制器开发的低级别,提供了一系列的函数接口和驱动,用于编写应用程序和控制外部设备。这些功能包括GPIO(通用输入/输出)控制、时钟控制、ADC(模数转换器)控制、UART(通用异步收发传输器)控制、SPI(串行外设接口)控制、I2C(串行外设接口)控制等。 STM32LL的中文手册是STMicroelectronics为中国地区用户提供的一份详细介绍STM32LL的技术文档。中文手册中包含了STM32LL的各个模块的详细说明、函数接口的使用方法和示例代码。通过阅读中文手册,开发者可以快速了解和掌握STM32LL的使用,进而加快应用程序的开发和调试过程。 中文手册通常包括以下内容: 1. STM32LL的概述和基本架构介绍。 2. 各个模块的详细说明,包括GPIO、时钟控制、ADC、UARTSPI、I2C等。 3. 函数接口和参数说明,以及示例代码。 4. 常见问题解答和故障排除指南。 5. 相关参考资料和资源链接。 总之,STM32LL中文手册是STMicroelectronics为其STM32系列微控制器的中国用户提供的一份技术文档,旨在帮助开发者更好地理解和应用STM32LL,提高开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值