历史上的今天
今天是:2025年02月12日(星期三)
2019年02月12日 | STM32—USART
2019-02-12 来源:eefocus
前言:
最近在调试STM32L152芯片的USART配置程序,实现STM32串口打印功能,本文总结下STM32L152芯片USART的使用方法。
硬件平台:STM32L152
软件平台:keil v5+cubeMX
函数库:HAL库
1:usart初始化
UART_HandleTypeDef huart3;
uint8_t rxbuf;
void MX_USART3_UART_Init(void)
{
huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart3);
}
//串口gpio初始化
void HAL_UART_MspInit(UART_HandleTypeDef* huart)
{
GPIO_InitTypeDef GPIO_InitStruct;
if(huart->Instance==USART3)
{
/* Peripheral clock enable */
__HAL_RCC_USART3_CLK_ENABLE();
/**USART3 GPIO Configuration
PB10 ------> USART3_TX
PB11 ------> USART3_RX
*/
GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* Peripheral interrupt init */
HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART3_IRQn);
}
}
//串口反初始化
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
{
if(huart->Instance==USART3)
{
/* Peripheral clock disable */
__HAL_RCC_USART3_CLK_DISABLE();
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11);
/* Peripheral interrupt DeInit*/
HAL_NVIC_DisableIRQ(USART3_IRQn);
}
}
//串口中断回调函数(响应事件)
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance==USART3)
{
//加入处理事件
//如:printf("\GET data!\n");
HAL_UART_Receive_IT(&huart3,&rxbuf,1);//重新使能串口中断
}
}
在STM32L1XX_it.c中加入中断函数
void USART3_IRQHandler(void)
{
HAL_UART_IRQHandler(&huart3);
}
主函数示例代码:
int main(void)
{
HAL_Init( );
SystemClock_Config( );
MX_GPIO_Init( );
MX_USART3_UART_Init();
HAL_UART_Receive_IT(&huart3,&rxbuf,1);//使能串口中断,有串口中断便进入中断回调函数
while(1)
{
}
}
上一篇:STM32—RTC
史海拾趣
|
dBm=10log(Pout/1mW),其中Pout是以mW为单位的功率值dBmV=20log(Vout /1mV),其中Vout是以mV为单位的电压值dBuV=20log(Vout /1uV),其中Vout是以uV为单位的电压值换算关系:Pout=Vout×Vout/RdBmV=10log(R/0.001)+dBm,R为负载阻抗dBuV=60+dB ...… 查看全部问答> |
|
医用监护仪是一种能够对人体重要的胜利、生化指标有选择地进行经常性或连续的检测,并且具有存储、显示、分析和控制功能,对超出规定范围的参数发出警报的系统。由于它可以实时、连续、长时间地检测病人的重要的生命参数,因此,成为医院数量较大的 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 富士康(Foxconn)正准备将一部分苹果(Apple)装置的生产从深圳转移到华北和华中。目前苹果更愿意与自己长期中国制造中心以外的工厂打交道。 此举旨在遏制成本。此前在发生一系列工人自杀和劳资 ...… 查看全部问答> |
|
我用数据采集卡采集差动变压器型电感传感器(LVDT)的输出信号(正负5V范围),采集卡0通道接传感器信号调理电路输出,采集卡的模拟地接调理电路的地,采集卡其他通道悬空。在几分钟内采集的电压值比较稳定,上下波动几mV,几分钟之后数据会突然变 ...… 查看全部问答> |




