写一个读取stm32f103c8t6的三个io口的高低电平在转化为一个三位的二进制数的C语言代码
时间: 2023-06-06 19:07:39 浏览: 62
#include "stm32f103c8t6.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
// Enable clock for GPIOC
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// Configure PC8, PC9 and PC10 as input
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);
// Read input values and convert to binary
int binary = 0;
binary |= ((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) << 2) & 0b100);
binary |= ((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_9) << 1) & 0b010);
binary |= ((GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_10) << 0) & 0b001);
return binary;
}