OpenEdv-开源电子网

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

关于ODR寄存器的配置 以及keil环境里程序的编写

[复制链接]

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
发表于 2014-8-21 11:47:35 | 显示全部楼层 |阅读模式
5金钱
小弟刚开始学STM32
在编写代码时遇到问题 代码很简单 如 我配置的PA0为
推挽输出 
主函数里面我这样写
int main()
{
各种初始化
GPIOA->ODR=1;
}
按说PA0应该输出的不是高电平吗 可结果是低电平 我在keil上仿真的时候 发现执行完GPIOA->ODR=1; 这条语句          A0=1 但是还能继续执行          然后PA0马上变低电平了 这是怎么回事呢?

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

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-21 12:03:44 | 显示全部楼层
是的。应该输出高电平。。
你整体代码贴出来看看。
包括初始化
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 12:17:44 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
#include"SMG.h"

void SMG_Init(void)
{
RCC->APB2ENR|=1<<3;          
RCC->APB2ENR|=1<<7;    

GPIOB->CRL&=0XFFFF0000;
GPIOB->CRL|=0x00003333;
                                                                                                                                                                

GPIOF->CRL&=0X00000000; 
GPIOF->CRL|=0X77777777;
}




int main(void) 
{              
Stm32_Clock_Init(9);  
SMG_Init();
delay_init(72);

WE1=1;
GPIOF->ODR=3;
}
可以了吗?
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 12:19:07 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
上边那部分是 SMG.c的部分
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 12:21:03 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
有点失误    复制粘贴错了        那里应该是8个3
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 12:23:12 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
另外   我在主函数最后面加上while(1);    就好了   这是怎么回事?
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-21 13:04:20 | 显示全部楼层
你不会没有while吧?
主函数必须是死循环啊
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 13:22:29 | 显示全部楼层
回复【7楼】Admin:
------------------------------回复【7楼】Admin:
---------------------------------
哦 这样子啊    可是为什么呢     我想搞懂    相当于汇编的END语句吗?
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12092
金钱
12092
注册时间
2013-3-8
在线时间
1285 小时
发表于 2014-8-21 13:58:43 | 显示全部楼层
回复【8楼】小王同学:
---------------------------------
不是相当于汇编的END语句。对于程序执行来说,pc是一直往下运行了。有了while(1);相当于pc一直在执行while(1)内的内容,相当于把pc指针所能指向的地址局限在一定范围内。没有while(1)的话,pc会一直++.这就可能会跑到没有编程的地方。跟指针跑飞差不多。
回复

使用道具 举报

8

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2014-8-21
在线时间
1 小时
 楼主| 发表于 2014-8-21 16:47:29 | 显示全部楼层
回复【9楼】augustedward:
---------------------------------
好的   谢谢大神
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 13:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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