文章目录
- 前言
- 一、看原理图
- 二、开始编程
- 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