文章目录
- 前言
- 一、看原理图
- 二、开始编程
- 1.开启时钟
- 2.配置GPIOA.0 上拉输入
- 3.读取 GPIOA.0 引脚 GPIOA_IDR 0位上是1(按键松开),输入就是高电平,否则就是低电平(按键按下)
 
- 三、完整程序
- 四 测试效果
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
课程需要:
提示:以下是本篇文章正文内容,下面案例可供参考
一、看原理图
确定要用哪个引脚?

 确定用第一个图: PA0 上拉输入
二、开始编程
1.开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
2.配置GPIOA.0 上拉输入
代码如下(示例):
	GPIO_InitStruct.GPIO_Pin= GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IPU;
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
3.读取 GPIOA.0 引脚 GPIOA_IDR 0位上是1(按键松开),输入就是高电平,否则就是低电平(按键按下)
代码如下(示例):
		temp=GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_0);
		
		if(temp==0) {
		
		  //led  亮
			GPIO_SetBits( GPIOA, GPIO_Pin_1);
			
		}
		else{
			
			//led  灭
			GPIO_ResetBits(GPIOA, GPIO_Pin_1);
			
		}
三、完整程序
#include<stm32f10x.h>
int main()
{
	u8 temp;
	GPIO_InitTypeDef GPIO_InitStruct; 
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitStruct.GPIO_Pin= GPIO_Pin_0;
	GPIO_InitStruct.GPIO_Mode= GPIO_Mode_IPU;
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
//LED 指示用
	
	GPIO_InitStruct.GPIO_Pin= GPIO_Pin_1;
	GPIO_InitStruct.GPIO_Mode= GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	
	while(1)
	{
		
		
	
		temp=GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_0);
		
		if(temp==0) {
		
		  //led  亮
			GPIO_SetBits( GPIOA, GPIO_Pin_1);
			
		}
		else{
			
			//led  灭
			GPIO_ResetBits(GPIOA, GPIO_Pin_1);
			
		}
		
	}
}
//#include <stm32f10x.h>
//#define BIT(n)     (1<<n)
//int main()
//{
//     //PC1  配置为推挽输出
//	*((unsigned int*)(0x40021000+0x18)) |=  0X00000010;
//	
	RCC->APB2ENR |=  0X00000010;
//	RCC->APB2ENR |=  0X00000020;
//	
	GPIOC->CRL &= 1111 1111 1111 1111 1111 1111 1111 0000 1111   0X FFFF FF0F
//	GPIOC->CRL &=  0XFFFFFF0F;
	GPIOC->CRL &= 0000 0000 0000 0000 0000 0000 0011 0000   0X 0000 0030	
//	GPIOC->CRL |= 0X00000030;
//	
//	GPIOD->CRL &=  0XFF0FFFFF;	
//	GPIOD->CRL |=  0X00300000;
//	
//	
//	
//	while(1)
//	{
//		
		GPIOC->ODR  |= 0X00000002;  //给高电平的
		GPIOC->ODR  &=~ 0X00000002;  //给低电平的
		GPIOC->ODR  &= 0XFFFFFFFD;  //给低电平的
//		
//		
		GPIOC->ODR  |= 1<<1;  //给高电平的   PC1 
        GPIOC->ODR  &= ~(1<<1);  //给高电平的   PC1 
		
//		
//		GPIOC->ODR  |=  BIT(1);  //给高电平的   PC1 
//        GPIOC->ODR  &= ~BIT(1);  //给高电平的   PC1 
//		
//		GPIOD->ODR  |=  BIT(5);  //给高电平的   PD1 
//        GPIOD->ODR  &= ~BIT(5);  //给高电平的   PD1 
//		
//		
//	}
//	
//}
四 测试效果

总结
123



















