你好,看到手册描述LPUart1可以工作在APB clock domain,请问用HAL库如何设置,谢谢! 下面代码应该为independent clock设置,对吧? void HAL_UART_MspInit(UART_HandleTypeDef huart) { GPIO_InitTypeDef GPIO_InitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; if(huart->Instance==LPUART1) { / USER CODE BEGIN LPUART1_MspInit 0 */ / USER CODE END LPUART1_MspInit 0 / / Initializes the peripherals clock** */ *PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1; PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)** { Error_Handler(); } / Peripheral clock enable / __HAL_RCC_LPUART1_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); /*LPUART1 GPIO Configuration PB10 ------> LPUART1_RX PB11 ------> LPUART1_TX / |
为什么STM32L496RG第一次烧写程序后需要重新上下电才能正常执行程序?
cubemx安装HAL库时要账号登录,点击注册,显示错误,ST官网点击注册也是显示错误,请问是什么问题?
请问STM32L4 支持动态链接库吗,需要什么平台生成DLL,如何调用?
STM32L432 can 通讯异常
STM32L151定时器上升沿触发ADC采样:低电平期间多出现一次采样动作
adc采集电压
有没有大佬STM32供电齐全,但是就是整个板子都没电流MCU不工作,代码也能烧录
ANT7-T-ST25DV04K中能否通过NFC进行供电而且供主控低功耗芯片L4正常工作
何处可以下载STM32L4xx.DFP?
stm32L0 支持arduino bootloader
另外,不建议使用L5系列做产品开发了,可以看看U5 H5 等系列。
蹲一个解答
数据手册这个地方的写法稍微有点乱。我们简单点,对于很多外设往往涉及2种时钟,
一个是外设总线时钟,一个是外设工作时钟。前者是给CPU或DMA访问外设寄存器用的
,实现对外设的控制和状态获取,后者是外设工作时用到的时钟,以UART为例就是
它通信时使用的时钟,以TIMER为例就是它计数的时钟。
我们不扯多了,重点聊聊你现在关于LPUART的时钟。它有两个时钟:
Usart_pclk 和 lpuart_ker_ck,且后者独立于前者,你可以把后者理解成这里说的独立时钟。
Usart_pclk就是我上面说的外设总线时钟,没得选,外设挂在什么总线就走什么总线来访问
它的寄存器。 lpuart_ker_ck是UART通讯时用到的时钟,比方波特率的是基于该时钟和寄存器配置
得到。它是可选的,在CubeMx那里有好几个选项就是针对lpuart_ker_ck的。
不过,在基于CubeMx生成的代码里,相应变量写法跟手册描述并未对应。假设我们在Cubemx
选择lpuart_ker_ck来自HSI.
我们可以看到工程里的配置代码是这样的:
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_LPUART1;
PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
第一项配置就是指配置UART的外设总线时钟,下方是它的工作时钟配置,也就是你
提到的独立时钟。
这样设计的好处,一是让外设工作时钟有更多的选择自由度;具体到这里,还有个好处,
即使外设总线时钟因低功耗模式停了,还可以基于外设工作时钟继续工作,比方我将
上面的工作时钟改成LSI或LSE.