完成一个STM32的USART串口通讯程序

本文详细介绍了如何使用STM32CubeMX配置HAL库实现STM32F103C8的USART2串口通信和GPIOA的LED控制,并给出了相应的汇编语言实现。内容包括STM32CubeMX的项目配置、代码生成、中断设置以及烧录和串口调试步骤。同时,展示了汇编代码中对RCC、GPIO、USART和NVIC等寄存器的直接操作,以及中断服务程序和主循环的编写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.hal库实现

  • (1)打开STM32CubeMX,创建新项目(如下图红框,此时我已经建立完项目,点击如图中1的历史项目)
    在这里插入图片描述

  • (2)选择STM32F103C8开发板

  • (3)如下图选择高速时钟
    在这里插入图片描述

  • (4)设置USART2如下图
    在这里插入图片描述

  • (5)点击Clock Configuration选择HSE和PLLCLK
    在这里插入图片描述

  • (6)设置中断
    在这里插入图片描述

  • (7)生成代码
    在这里插入图片描述

  • (8)在main.c中的while循环中添加代码

char data[]="hello windows!\n";
		HAL_UART_Transmit(&huart2, (uint8_t *)data, 15, 0xffff);
		//高电平点亮A12
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);
		
		HAL_Delay(100);
		//低电平熄灭A12
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);
		HAL_Delay(900);
  • (9)设置参数
    在这里插入图片描述

  • (10)烧录
    在这里插入图片描述

  • (11)串口调试,rxd接A2,txd接A3,boot0置0,boot1置1
    在这里插入图片描述

  • 注:烧录后要先断电,rxd接A2,txd接A3,boot0置0,boot1置1,再通电。串口调试助手设置波特率为115200,校验位无,数据位为8,停止位为1

二.汇编实现

  • (1)新建项目,选择STM32F103C8芯片

  • (2)新建.s文件
    在这里插入图片描述

  • (3)在文件中写入如下代码

;RCC寄存器地址映像             
RCC_BASE            EQU    0x40021000 
RCC_CR              EQU    (RCC_BASE + 0x00) 
RCC_CFGR            EQU    (RCC_BASE + 0x04) 
RCC_CIR             EQU    (RCC_BASE + 0x08) 
RCC_APB2RSTR        EQU    (RCC_BASE + 0x0C) 
RCC_APB1RSTR        EQU    (RCC_BASE + 0x10) 
RCC_AHBE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值