OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5573|回复: 6

为什么我这段代码编译通过,但是为何把程序下载到开发板上,按了开发板上的按键,但是相应的LED灯不亮呢?检查了好久也没发现程序有什么错误啊

[复制链接]

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
发表于 2014-4-15 15:33:50 | 显示全部楼层 |阅读模式
[mw_shl_code=c,true]void SysClock_Init(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS){ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){ ; } RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource() != 0x08){ ; } } } /*端口配置*/ void GPIO_Configuration(void) {GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOD, &GPIO_InitStructure); } /*时钟使能*/ void RCC_Configuration(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); } /*键盘扫描程序*/ u8 key_scan(void) { if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0)==0) return 0; if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_1)==0) return 1; if (GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_2)==0) return 2; if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_3)==0) return 3; if(GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_4)==0) return 4; return 5; } int main(void) { GPIO_Configuration(); RCC_Configuration(); SysClock_Init(); while(1) { u8 i; i=key_scan(); switch(i) { case 0: GPIO_SetBits(GPIOD, GPIO_Pin_8); break; case 1: GPIO_SetBits(GPIOD, GPIO_Pin_9); break; case 2: GPIO_SetBits(GPIOD, GPIO_Pin_10); break; case 3: GPIO_SetBits(GPIOD, GPIO_Pin_11); break; } } // return 0; } [/mw_shl_code]
为什么我这段代码编译通过,但是为何把程序下载到开发板上,按了开发板上的按键,但是相应的LED灯不亮呢?检查了好久也没发现程序有什么错误啊
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-4-15 15:55:29 | 显示全部楼层
回复【楼主位】a598009273:
---------------------------------
main函数中你这样初始化是不对的
改为这样
[mw_shl_code=c,true]int main(void) { SysClock_Init(); RCC_Configuration(); GPIO_Configuration(); while(1) { ......... } }[/mw_shl_code]


现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-15 16:38:53 | 显示全部楼层
回复【2楼】Badu_Space:
---------------------------------
非常感谢,终于有用了。看完你介绍的那个原子的建工程文件的视频后,对于建工程文件也懂了,这个程序和关于建工程文件的问题困扰了我一天,真心感谢,谢谢,以后有问题希望能再得到请教。
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-15 16:41:20 | 显示全部楼层
再请教一下,为什么我那样初始化就不行呢,改成你那样就行呢?以前我看视频看书怎么都没发现呢,书上也没说必须这样初始化!
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-4-15 17:07:25 | 显示全部楼层
回复【4楼】a598009273:
---------------------------------
你的晶振都还没初始化相关的寄存器,后面的GPIO怎么能工作呢?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

18

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2014-4-15
在线时间
0 小时
 楼主| 发表于 2014-4-15 17:12:12 | 显示全部楼层
哦,知道了,谢谢
回复 支持 反对

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2015-4-18
在线时间
2 小时
发表于 2015-5-29 20:49:17 | 显示全部楼层
回复【3楼】a598009273:
---------------------------------
兄台 麻烦问下 视频哪有啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-28 23:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表