在 stm32中如何判断管脚的状态呀·~。。能不能详细的写出来。 比如我要判断PA6是否为高电平。。。还有字库
发布网友
发布时间:2022-04-29 19:15
我来回答
共4个回答
热心网友
时间:2023-10-05 13:58
u8 GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9); 这个是读取输入引脚的,还有相应的读取输出引脚。
读取PB9引脚的点评状态,高电平返回1,低电平返回0.
是这个函数,不过函数名儿我记不大清了,大体是这个名称。
热心网友
时间:2023-10-05 13:59
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6))
就行了
热心网友
时间:2023-10-05 13:59
买一个开发板,里面一大把例子,网上也有很多。
热心网友
时间:2023-10-05 14:00
/******************************************************************************/
#include "stm32f10x_lib.h"
/***************************************/
GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
#definePA0_H GPIO_SetBits(GPIOA, GPIO_Pin_0) // PA0 高电平
#definePA0_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++);
}
/*************结束***************/
有什么不懂的还可以再问我