打印

STM32控制GPIO不行,大侠帮忙看下!

[复制链接]
1849|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Vienna125289 于 2012-6-20 16:50 编辑

编译调试都没问题  就是端口电平没有得到改变。(keil MDK平台的)

/*   main.c   */
#include  "stm32f10x.h"
void RCC_Configuration(void);
void GPIO_Configuration(void);

void  Delay (vu32 nCount)
{
  for(; nCount != 0; nCount--);
}


int main()
{
RCC_Configuration();//系统各部分时钟初始化
GPIO_Configuration();//GPIO初始化
while(1){   
GPIO_SetBits(GPIOB , GPIO_Pin_5);         
GPIO_SetBits(GPIOB , GPIO_Pin_4);   
Delay(0xffffff);     
GPIO_ResetBits(GPIOB , GPIO_Pin_5);   
GPIO_ResetBits(GPIOB , GPIO_Pin_4);
Delay(0xffffff);
     }
}

void RCC_Configuration(void)
{
/* 定义枚举类型变量 HSEStartUpStatus */
ErrorStatus HSEStartUpStatus;

/* 复位系统时钟设置 */
RCC_DeInit();

/* 开启HSE *///高速外部时钟信号HSE
RCC_HSEConfig(RCC_HSE_ON);

/* 等待HSE起振并稳定 */
HSEStartUpStatus = RCC_WaitForHSEStartUp();

/* 判断HSE起是否振成功,是则进入if()内部 */
if(HSEStartUpStatus == SUCCESS)
{
/* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */
RCC_HCLKConfig(RCC_SYSCLK_Div1);

/* 选择PCLK2时钟源为 HCLK(AHB) 1分频 */
RCC_PCLK2Config(RCC_HCLK_Div1);

/* 选择PCLK1时钟源为 HCLK(AHB) 2分频 */
RCC_PCLK1Config(RCC_HCLK_Div2);

/* 设置FLASH延时周期数为2 */
FLASH_SetLatency(FLASH_Latency_2);
/* 使能FLASH预取缓存 */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

/* 选择锁相环(PLL)时钟源为HSE 1分频,倍频数为9,则PLL输出频率为 8MHz * 9 = 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

/* 使能PLL */
RCC_PLLCmd(ENABLE);

/* 等待PLL输出稳定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

/* 选择SYSCLK时钟源为PLL */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

/* 等待PLL成为SYSCLK时钟源 */
while(RCC_GetSYSCLKSource() != 0x08);
}

/* 打开APB2总线上的GPIOB时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
}


void GPIO_Configuration(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO操作宏

   /* 设置PA.2,PA.3为推挽输出,最大翻转频率为50MHz */
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //口线翻转频率
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置为推挽输出
   GPIO_Init(GPIOB , &GPIO_InitStructure);
}

U57U)Z{YI]2}(6N`GJ8SZFH.jpg (19.99 KB )

U57U)Z{YI]2}(6N`GJ8SZFH.jpg

相关帖子

沙发
Vienna125289|  楼主 | 2012-6-19 19:36 | 只看该作者
本帖最后由 Vienna125289 于 2012-6-20 09:34 编辑

顶一下。

使用特权

评论回复
板凳
zhaoyu2005| | 2012-6-20 10:04 | 只看该作者
程序有问题,你的GPIOB 4 5一直输出高电平对吧?不是电平没变,是你没测试到,时间太短了,还有就是,至于为什么,自己用找吧。很简单的

使用特权

评论回复
地板
Vienna125289|  楼主 | 2012-6-20 11:28 | 只看该作者
本帖最后由 Vienna125289 于 2012-6-20 11:36 编辑

3# zhaoyu2005


你的意思我明白,我在resetbit后面在加一个延时也不行的。  而且我用万用表侧过,它们的电平不管怎么控制怎么延时 一直都没变 在2V左右。哪怕只是一直置高或者一直置低,都不能相应的变化。 不知道是哪里出问题了 ???

使用特权

评论回复
5
Vienna125289|  楼主 | 2012-6-20 20:12 | 只看该作者
搞定了,是boot0没有置低造成没有从用户flash启动

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

0

粉丝