OpenEdv-开源电子网

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

有关程序代码的问题

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-4-17
在线时间
0 小时
发表于 2014-5-1 17:03:32 | 显示全部楼层 |阅读模式
该怎样去读那些代码啊,看不懂,有学习的资料吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13079
金钱
13079
注册时间
2012-11-26
在线时间
3809 小时
发表于 2014-5-1 17:29:56 | 显示全部楼层
先得会C语言

看不懂C语言


说跟没说一样
学无止境
回复 支持 反对

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-4-17
在线时间
0 小时
 楼主| 发表于 2014-5-1 17:36:07 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
C语言学过,不过那些代码跟C语言不太一样啊,WWDG->CFR|=fprer<<7;WWDG->CFR&=0XFF80;就这些看不懂省么意思
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-1 19:47:49 | 显示全部楼层
c基础呀
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13079
金钱
13079
注册时间
2012-11-26
在线时间
3809 小时
发表于 2014-5-2 09:31:04 | 显示全部楼层
回复【3楼】妖姬:
---------------------------------
建议你还是从库函数版本学起吧  那个估计能看懂    这个配置寄存器的,初学者还是先不要了
学无止境
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
发表于 2014-5-4 10:13:36 | 显示全部楼层
回复【3楼】妖姬:
---------------------------------
#define WWDG                ((WWDG_TypeDef *) WWDG_BASE)

/*------------- Window WATCHDOG -------------*/
typedef struct
{
  vu32 CR;
  vu32 CFR;
  vu32 SR;
WWDG_TypeDef;

/* eripheral and SRAM base address in the bit-band region */
#define ERIPH_BASE           ((u32)0x40000000)
#define APB1PERIPH_BASE       ERIPH_BASE
#define WWDG_BASE             (APB1PERIPH_BASE + 0x2C00)

通过上面层层的宏定义,我们知道了WWDG_BASE是一个地
,地址就是指针 
((WWDG_TypeDef *) WWDG_BASE)规定了
WWDG_BASE地址开始的面的
WWDG_TypeDef 结构体长度的内存里面的数据按照WWDG_TypeDef结构体格式
进行存储
其实 WWDG 就是表示寄存器里的一个地址(即指针),WWDG->CFR通过
结构体指针来引用结构体里面的成员变量,这是C语言里面的知识,自己研究研究
至于这个WWDG->CFR|=fprer<<7; WWDG->CFR&=0XFF80 里面的"与运算","或运算"以及"左移"就不讲了
回复 支持 反对

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-5-4 10:20:59 | 显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
请问老师,例程是stm32F103RB的,对哪些部分修改,让它适用于F107VC呢?
回复 支持 反对

使用道具 举报

0

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-5-4 10:33:58 | 显示全部楼层
嵌入式C语言归根结底就是对寄存器的指定的位读取或者写入指定的数据。至于WWDG->CFR&=0XFF80为什么就能够保证在硬件上对窗口看门狗模块的CFR寄存器的低7位清0,5楼已经写的很清楚了。#define WWDG                ((WWDG_TypeDef *) WWDG_BASE) 表示定义WWDG为WWDG_TypeDef结构体的一个对象(说对象不太合适,其实本质上是一个指针),并且地址为0x40002C00。这样指定地址的方式是嵌入式C语言里非常常见的,也是嵌入式C语言的基础。为什么寄存器的定义要用结构体的方式,因为结构体的成员在地址上都是连续的。比如WWDG_TypeDef中CR寄存器的地址就是0x40002C00,CFR的地址为0x40002C04,SR寄存器的地址为0x40002C08。这样WWDG->CFR&=0XFF80就能保证在地址0x40002C04处将低7位清0,而这个地址正好是CFR寄存器的地址(硬件上就这么设计的,这个不需要深究)。这样就实现了寄存器的硬件地址和软件设置之间的关联。楼猪好好看看C语言,打好基础,然后把stm32f103.h这个文件里面的东西看透看明白了,基本上学习STM32或者看代码就没什么压力了。
回复 支持 反对

使用道具 举报

0

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-5-4 10:39:45 | 显示全部楼层
回复【7楼】chenwangchris:
---------------------------------
107是互联型的,由于驱动以太网和USB OTG外设接口需要25MHz或者50MHz的时钟输出,所以STM32F107需要用25MHz的晶振,而103多是8MHz的晶振,移植程序的时候注意将时钟配置修改一下应该就问题不大了。
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-4 13:33:36 | 显示全部楼层
回复【7楼】chenwangchris:
---------------------------------
1、这个你就要看相关的资料来修过咯
2、库函数的话就简单了,用107的替换掉原来103的,大部分都能用了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-10 10:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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