OpenEdv-开源电子网

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

本人刚学32f103,很多基本知识理论不是很懂,根据学习光盘内的代码稍微做了一点修改,结果DS1,key1和wk_up正常,而DS0一一开始就点亮,按key0也没反应

[复制链接]

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-9-14
在线时间
5 小时
发表于 2015-9-14 21:51:13 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]test_key.c文件中 #include "sys.h" #include "usart.h" #include "delay.h" #include "led.h" #include "key.h" int main(void) { Stm32_Clock_Init(9); delay_init(72); key_init(); led_init(); led0 = led1 = 1; while(1) { light_on(key_num()); } } key.c文件中 #include "key.h" #include "delay.h" void key_init(void) { RCC->APB2ENR |= 1<<2; //PA??APB2ENR????bit2 GPIOA->CRH &= 0X0F0FFFFF; //8~15????CRH????PA13??PA15 GPIOA->CRH |= 0X80800000; //PA13??PA15???????? GPIOA->ODR |= 1<<13; //PA13?????±?????????? GPIOA->ODR |= 1<<15; //PA15?????±?????????? GPIOA->CRL &= 0XFFFFFFF0; //0~7????CRL GPIOA->CRL |= 0X00000008; //PA0???????? // GPIOA->ODR |= 0<<0; //PA0?????±?????????? /***********?????í????PA0???????????ò??????????????????????**************/ } u8 key_num(void) { u8 num,key_lock = 0; //????°??ü×?×??? if(key_lock == 0 && (key0 == 0 || key1 == 0 || key_wk_up == 1)) { delay_ms(10); key_lock = 1; if(key0 == 0) num = 0; else if(key1 == 0) num = 1; else if(key_wk_up == 1) num = 2; } else if(key0 == 1 || key1 == 1 || key_wk_up == 0) { key_lock = 0; } return num; } key.h文件中 #ifndef _KEY_H_ #define _KEY_H_ #include "sys.h" #define key0 PAin(13) #define key1 PAin(15) #define key_wk_up PAin(0) void key_init(void); u8 key_num(void); #endif led.c文件中 #include "led.h" void led_init(void) { RCC->APB2ENR |= 1<<2; //PA???? RCC->APB2ENR |= 1<<5; //PD???? GPIOA->CRH &= 0XFFFFFFF0; //8~15????CRH GPIOA->CRH |= 0X00000003; //0X3???ì???? GPIOA->ODR |= 1<<8; //?????±?????????? GPIOD->CRL &= 0XFFFFF0FF; //0~7????CRL GPIOD->CRL |= 0X00000300; //0X3???ì???? GPIOD->ODR |= 1<<2; //?????±?????????? } void light_on(u8 num) { switch(num) { case 0: led0 = 0; break; case 1: led1 = 0; break; case 2: led0 = led1 = 1; break; default: break; } } led.h文件中 #ifndef _LED_H_ #define _LED_H_ #include "sys.h" #define led0 PAout(8) #define led1 PDout(2) void led_init(void); void light_on(u8); #endif [/mw_shl_code]
不知道是不是代码中的问题(刚学着写的,可能会有一些低级错误而我不知道的,还望指点,勿喷)

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11553
金钱
11553
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-9-14 23:01:58 | 显示全部楼层
对初学者,这目标有点复杂了。

降低点目标,一步步来。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-14 23:31:48 | 显示全部楼层
把按键扫描去掉,看看还亮么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-9-14
在线时间
5 小时
 楼主| 发表于 2015-9-15 12:57:10 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
按照先跑马灯在按键的顺序来的。。。不知道中间会有什么差错,或者漏掉了什么
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-9-14
在线时间
5 小时
 楼主| 发表于 2015-9-15 13:00:28 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
刚去掉按键扫描试过了,DS0和DS1都是不亮的,想想也应该是不亮的,给了pd2和pa8空闲时高电平了,试过的确是不亮
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-21 01:02:50 | 显示全部楼层
回复【5楼】灬卟灬:
---------------------------------
说明问题出在你的按键扫描
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 12:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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