目录
一、实验目标
二、实验物料
三、实验过程
四、实验结果
一、实验目标
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个电平状态