历史上的今天
返回首页

历史上的今天

今天是: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)

    { 

    }

}

 

推荐阅读

史海拾趣

Densitron公司的发展小趣事

人才是企业发展的关键因素。Densitron公司非常重视人才的培养和团队建设。公司建立了一套完善的人才培养机制,通过内部培训、外部学习等方式,不断提升员工的技能水平和综合素质。同时,公司还注重团队文化建设,鼓励员工之间的协作与交流。这些举措使得Densitron公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

DESIGNERSYSTEMS公司的发展小趣事

随着科技的快速发展,电子设备的设计要求越来越高。DESIGNERSYSTEMS公司投入大量研发资源,不断推动技术突破。他们成功开发出一套高效、智能的设计软件,能够大大提高设计效率和精度。这一技术突破使得DESIGNERSYSTEMS在电子设备设计领域具备了更强的竞争力,吸引了更多客户的合作。

FINECHIPS公司的发展小趣事

FINECHIPS公司自成立以来,始终将技术创新视为企业发展的核心驱动力。公司投入大量资源于研发部门,专注于集成电路(IC)和电子元器件的技术创新。在某一关键时期,FINECHIPS成功研发出一款高性能、低功耗的模拟开关芯片,该芯片凭借其卓越的性能迅速获得市场认可,不仅在国内市场占据一席之地,还成功打入国际市场,为公司带来了显著的品牌影响力和市场份额增长。

CMOSIS公司的发展小趣事

近年来,随着人工智能、物联网等技术的快速发展,CMOS图像传感器行业也面临着深刻的变革。CMOSIS公司敏锐地把握住了这一趋势,积极调整战略方向,加大了在人工智能算法、低功耗设计等方面的研发投入。通过不断创新和优化产品,公司成功应对了行业变革带来的挑战,保持了稳健的发展态势。

Fairview Microwave Inc公司的发展小趣事

在国内市场取得一定成绩后,Fairview Microwave开始将目光投向国际市场。他们积极参加国际电子展会和技术交流活动,与全球各地的客户建立联系。同时,公司还积极开拓海外市场,通过设立分支机构和代理商等方式,将产品销售到全球各地。这些举措不仅为公司带来了更多的商机,也进一步提升了Fairview Microwave的品牌知名度和影响力。

CUI公司的发展小趣事

在全球化的背景下,电子行业中的CUI技术也呈现出国际合作与竞争并存的局面。一些国内企业通过与国际知名企业的技术合作,引进先进的CUI生产线和工艺,提高了自身的技术水平和市场竞争力。同时,国际市场的竞争也促使国内企业不断创新,寻求差异化的发展道路。

问答坊 | AI 解惑

关于无线通讯常用dB值的计算方法

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 ...…

查看全部问答>

手机电池会爆炸!

手机电池会爆炸!这不是危言耸听,而是发生在我们身边的事实。手机品牌商因陷入 “电池门”而烦恼,继而在生产环节上草木皆兵;而各种来路不明的手机电池在市场上 依然活跃。对消费者来说,“黑芯”手机电池就是一个随时有可能爆炸的手雷。 ...…

查看全部问答>

电动智能小车(完整论文),绝对值得一看

本帖最后由 paulhyde 于 2014-9-15 03:04 编辑 小车    …

查看全部问答>

80C196单片机

那位大侠有着方面的资料和经验啊,欢迎讨论。本学期有一门实验课,特来向大侠讨教。。。…

查看全部问答>

监护仪故障的元件级分析与维修

医用监护仪是一种能够对人体重要的胜利、生化指标有选择地进行经常性或连续的检测,并且具有存储、显示、分析和控制功能,对超出规定范围的参数发出警报的系统。由于它可以实时、连续、长时间地检测病人的重要的生命参数,因此,成为医院数量较大的 ...…

查看全部问答>

富士康拟将苹果产品生产转至内地

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 富士康(Foxconn)正准备将一部分苹果(Apple)装置的生产从深圳转移到华北和华中。目前苹果更愿意与自己长期中国制造中心以外的工厂打交道。 此举旨在遏制成本。此前在发生一系列工人自杀和劳资 ...…

查看全部问答>

屏幕截图

我想做一个屏幕截图程序,然后保存在硬盘中。大家能否赐教啊。…

查看全部问答>

求助:LINUX 系统下支持MTP协议吗?

LINUX 系统下支持MTP协议吗?如果支持那么如何实现MTP协议控制消息的发送和接收…

查看全部问答>

nfs上传任务挂起

在VXWORKS下,起一个任务来上传文件到NFS服务器,文件大小为4M左右,文件传一下后就PEND+T了,提示ERRNO是3000002即是errno = 0x300002 : S_nfsLib_NFSERR_NOENT.错误!! 请问各位大牛是什么原因引起的,怎么解决? 谢谢!!!…

查看全部问答>

LVDT传感器稳定性求救

我用数据采集卡采集差动变压器型电感传感器(LVDT)的输出信号(正负5V范围),采集卡0通道接传感器信号调理电路输出,采集卡的模拟地接调理电路的地,采集卡其他通道悬空。在几分钟内采集的电压值比较稳定,上下波动几mV,几分钟之后数据会突然变 ...…

查看全部问答>