STM32F103C8T6 获取指定的GPIO口电平,串口发送

该实验旨在通过STM32F103C8T6微控制器获取GPIOA0至A15的电平状态,并利用USART1串口周期性发送这些状态。实验中,使用了定时器TIM3和USART1,配置了相关GPIO引脚,将读取的GPIO状态组合成一个16位变量并通过串口发送。

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

目录

一、实验目标

二、实验物料

三、实验过程

四、实验结果

一、实验目标

        1.获取指定的GPIO输入口的电平状态(GPIOA0,A2,A3,A4,A5,A6,A7,A15)

        2.通过USART串口循环发送指定的GPIO的电平状态

二、实验物料

        1.STM32F103C8T6核心板

        2.野火仿真器

        3.USB转TTL模块

三、实验过程

        1.确定使用STM32F103C8T6中的外设 

                循环发送需要使用定时器TIM3

                串口通信需要使用USART1

        2.确定所需使用的引脚 

                GPIO输入 A0 A2 A3 A4 A5 A6 A7 A15       

                USART通信使用PA9(TX) PA10(RX) 

        3.初始化GPIO,USART1,TIM3

        4.将GPIO输入全部放入一个16位的变量中,使用USART1发送

if (time == 5000) /* 1000 * 1 ms = 1s 时间到 */
    {
      time = 0;
      GPIO_value = ((GPIOA->IDR & GPIO_IDR_IDR0) & 0x01) << 0 |
        (((GPIOA->IDR & GPIO_IDR_IDR2) >> 2) & 0x01) << 1 |
        (((GPIOA->IDR & GPIO_IDR_IDR3) >> 3) & 0x01) << 2 |
        (((GPIOA->IDR & GPIO_IDR_IDR4) >> 4) & 0x01) << 3 |
        (((GPIOA->IDR & GPIO_IDR_IDR5) >> 5) & 0x01) << 4 |
        (((GPIOA->IDR & GPIO_IDR_IDR6) >> 6) & 0x01) << 5 |
        (((GPIOA->IDR & GPIO_IDR_IDR7) >> 7) & 0x01) << 6 |
        (((GPIOA->IDR & GPIO_IDR_IDR15) >> 15) & 0x01) << 7;

      USART_SendData(DEBUG_USARTx, GPIO_value);
    }

        GPIO_value 的值转换为二进制对应从PA0-PA15(右至左),共8个电平状态

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值