在 stm32中如何判断管脚的状态呀·~。。能不能详细的写出来。 比如我要判断PA6是不是为高电平。。。还有字库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 stm32中如何判断管脚的状态呀·~。。能不能详细的写出来。 比如我要判断PA6是不是为高电平。。。还有字库相关的知识,希望对你有一定的参考价值。

芯片跟stm32结合的例子程序有么··

u8 GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9); 这个是读取输入引脚的,还有相应的读取输出引脚。
读取PB9引脚的点评状态,高电平返回1,低电平返回0.
是这个函数,不过函数名儿我记不大清了,大体是这个名称。
参考技术A if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6))
就行了
参考技术B 买一个开发板,里面一大把例子,网上也有很多。 参考技术C /******************************************************************************/

#include "stm32f10x_lib.h"

/***************************************/
GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;

#define PA0_H GPIO_SetBits(GPIOA, GPIO_Pin_0) // PA0 高电平
#define PA0_L GPIO_ResetBits(GPIOA, GPIO_Pin_0) // PA0 低电平

/* 函数申明 -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);

void Delay(u32 nTime);
void Delayms(vu32 m);
/* 变量定义 ----------------------------------------------*/
u8 ReadValue;

/*
********************************************************************************
** 函数名称 : main(void)
** 函数功能 : 主函数
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
int main(void)


RCC_Configuration();
GPIO_Configuration();

while(1)

PA0_H; //设置PA0为高
ReadValue = GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0);//读出PA0的状态

PA0_L; //设置PA0为低
ReadValue = GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_0); //读出PA0的状态




/*
********************************************************************************
** 函数名称 : RCC_Configuration(void)
** 函数功能 : 时钟初始化
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
void RCC_Configuration(void)

/* RCC system reset(for debug purpose) */
RCC_DeInit();

/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);

/* Wait till HSE is ready */
HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)

/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);

/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);

/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);

/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

/* PLLCLK = 8MHz * 9 = 72 MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

/* Enable PLL */
RCC_PLLCmd(ENABLE);

/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)



/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/* Wait till PLL is used as system clock source */
while(RCC_GetSYSCLKSource() != 0x08)





/*
********************************************************************************
** 函数名称 : GPIO_Configuration(void)
** 函数功能 : 端口初始化
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
void GPIO_Configuration(void)

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE );

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ; // 上拉输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 最高输出速率50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); // 选择A端口 */


/*
********************************************************************************
** 函数名称 : Delay(vu32 nCount)
** 函数功能 : 延时函数
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
void Delay(vu32 nCount)

for(; nCount != 0; nCount--);


/*
********************************************************************************
** 函数名称 : void Delayms(vu32 m)
** 函数功能 : 长延时函数 m=1,延时1ms
** 输 入 : 无
** 输 出 : 无
** 返 回 : 无
********************************************************************************
*/
void Delayms(vu32 m)

u32 i;

for(; m != 0; m--)
for (i=0; i<50000; i++);


/*************结束***************/

有什么不懂的还可以再问我

stm32F103的端口与管脚的功能定义表

一、端口与引脚的定义

二、FSMC引脚定义

FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展.

 

以上是关于在 stm32中如何判断管脚的状态呀·~。。能不能详细的写出来。 比如我要判断PA6是不是为高电平。。。还有字库的主要内容,如果未能解决你的问题,请参考以下文章

STM32共用中断线的外部中断引脚的判断

stm32F103的端口与管脚的功能定义表

stm32 那个管脚是1管脚,A还是B

在STM32 应用的如何将OSC32_IN和OSC32_OUT设置为其它模式

STM32之外部中断

stm32通过三极管驱动继电器电路详解