看见网上说学单片机有助于学习英语的电影c++的学习,是这样的吗?

学习单片机,如果不大懂编程语言(C++),汇编语言也不懂,可以吗?_百度知道
学习单片机,如果不大懂编程语言(C++),汇编语言也不懂,可以吗?
这样有用吗我就只知道打程序进去,然后运行?出去工作后,在单片机这方面发展是不是要懂C语言或汇编语言呢
提问者采纳
硬件语言至少要懂一样,不过所谓一艺通而百艺通,懂一样一般就很多都懂了
提问者评价
其他类似问题
为您推荐:
编程语言的相关知识
其他4条回答
单片机用c++到没听说过。从0开始吧
单片机都是用C的啊,没听过用C++的。c和汇编都是必须的啊
最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。
我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像C语言那么灵活,易于理解和学习。 然后可以继续学习C语言,这个语言比较灵活。有了pascal的基础,在进行C语言编程就不会因为C语言的灵活而有问题 。后面的就可以学习VC什么的了。
C语言的书推荐谭浩强的,比较好。
我当时学习pascal和C语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁想搞嵌入式和单片机,有必要深入学习C++吗?
[问题点数:20分,结帖人t1397018]
想搞嵌入式和单片机,有必要深入学习C++吗?
[问题点数:20分,结帖人t1397018]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。C语言学习总结-谈谈俺学单片机编程的几种新用法(转)-c/c++-电脑编程网C语言学习总结-谈谈俺学单片机编程的几种新用法(转)作者: 简单,专注,心如止水  和相关&&
搞嵌入式的,大都用C语言写代码,本人从事单片机开发,也写了不少的代码,一直习惯用 if 、switch打天下,在定义数据结构的时候也只用到 字符型、整型、数组,位;很少用结构体,共用体,枚举,因为咱C语言学得不好,和它们不熟,总感觉它们不那么好招呼,重要的是自已觉得没必要用上它们。随着越来越多的积累,咱写代码的风格也在不断的发生变化,从以前的喜欢将所有的函数及数据的定义写在一个文件里到逐渐的将函数按功能模块化、从以前的习惯直接在程序里写常数到慢慢的开始用上宏来代替,咱编程的风格也逐渐开始正规化,编程水平也逐步提升,当然这些成绩都源于咱不断的学习,学习匠人的编程规范、学习herald的感悟设计、还有网上写得非常出色的代码以及STM32的固件函数库,在咱的不断领悟和思考下,总结了几点关于C语言的用法,与大家共同分享。
&
一、&&&&&&& 学习匠人的头文件包含巧妙用法
当一个头文件被多个C文件包含,且该头文件中定义了这些C文件的公共变量,则在编译的时候会出现重复定义,导致编译通不过,通常我们会采用如下两种做法来解决上述问题。
(为了让问题表述得更清楚,我们假设两个C文件C1,C2,C3,一个头文件H1,C1,C2,C3有两个公共变量V1和V2)
1、& 在C1文件中定义变量V1和V2,在C2和C3文件中对V1,V2用extern声明;
2、& 在C1文件中定义变量V1和V2,在H1中对V1,V2用extern声明,然后在C2和C3文件中包含H1;
&&&&&&&& &很显然,以上两种方法都要对V1和V2书写至少两次,一次定义,一次外部声明,且不是在同一文件下,这样不利于管理和修改,有没有一种方法可以让这些公用的变量放在一个文件里,且只要书写一次呢?
&&&&&&&& 偶在二姨那里无意中看到匠人的发帖,就是关于该问题的讨论,现在我转发一下,与大家同共分享。首先我们将要用到的公共变量全部书写到com.h文件中,每一个变量在定义前加一个符号EXT_,当该头文件被main.c函数包含时,定义EXT_为空,表示com.h中的变量在main.c中被定义,当被其它文件包含时,定义EXT_为extern,表示外部声明,如:
Com.h文件:
//避免重复定义
#ifdef& root
&&&&&& &#define EXT_&
#else
& &&&&&&#define EXT_& extern
#endif
&&&&&& &
//全局变量
EXT_ u8& variable1;&& //该变量在三个C文件中都要用到
Main.c
#define root&&&&& //在包含com.h前定义root
#include "com.h"
&
二、&&&&&&& 用结构体的方式来定义总线或外设地址
当一个整体包含不同类型的多个成员时,通常用结构体来定义结构体变量,这样内存会将这些变量按照递增的方式分配到相邻的地址(不对齐的地方会有填充),按“结构体名.成员名”的方式访问结构体内的成员,这是访问结构体变量的方式;但是还有一种指向结构体变量的指针,它可以将某个地址转换成该结构体类型的指针,比如寄存器的定义:
(以下是摘自STM32固件函数库,关于GPIO的定义)
typedef struct
{
& vu32 CRL;& //0
& vu32 CRH;& //偏移量4
& vu32 IDR;& //偏移量8
& vu32 ODR;
& vu32 BSRR;
& vu32 BRR;
& vu32 LCKR;
} GPIO_TypeD
&
#define GPIOA_BASE&&&&&&&&&&& ((u32)0x)& //GPIOA的基地址为0x
#define GPIOA &&(GPIO_TypeDef *)& GPIOA_BASE;& //强制类型转换为GPIO_TypeDef类型的指针
&
这样在操作GPIOA的寄存器时只要这样写就可以了
读: X="GPIOA-"&CRL;&&&& 写:GPIOA-&CRL=X;&
或& 读: X=(*GPIOA).CRL;&&&& 写:(*GPIOA).CRL =X;&
&
当然,要达到上述目的也可以采用如下方式
#define GPIOA_ CRL& 0x
#define GPIOA_ CRH& 0x
#define GPIOA_ IDR& 0x
#define GPIOA_ ODR& 0x4001080C
#define GPIOA_ BSSR& 0x
#define GPIOA_ LCKR& 0x
&
很明显,第一种书写方式更加正规化,且当定义多个GPIO时,只要将其它GPIO的基地址强制转换为该结构类型的指针即可。
&
再来看看一个定义外部总线的例子
typedef struct
{
& vu8 CH375_DATA;
& vu8 CH375_CMD;& //偏移量1
} CH375_TypeD
&#define CH375&&&&&&&&&&&& ((CH375_TypeDef *) 0x6c000000)
CH375-& CH375_DATA=& //往0x6c000000地址处写数据
CH375-& CH375_CMD=& //往0x6c000001地址处写命令
怎么样,是不是方便多了。重要的是代码的观赏和可读性提高了。
&
&
三、&&&&&&& 用枚举数据类型来定义特定的状态
&&& 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个函数在操作过程中会返回几个特定的状态:操作成功,操作失败,忙,等等。如果我们直接在函数里用0,1和2来表示这三种状态,有时偶尔会出现数值与实际状态对不上号的情况,造成置状态和判断状态错误,那么我们可以在程序里用宏或者枚举来事先定义好这些状态。
如:用宏定义:
#define Sucess& 0
#define Failure& 1
#define Busy& 2
&
用枚举
typedef enum { Sucess = 0, Failure , Busy } FlagS
&
&
四、&&&&&&& 用共用体类型定义共享内存空间
共用体类型定义的数据是将多个成员共享同一内存空间,该空间的大小为最大成员的大小,其用法与结构体完全相同,但值得注意的是不能同时引用多个成员,在某一时刻只能使用其中之一成员。
在程序中如果全局变量比较多,包含几个结构和数组,如果这些全部定义的话势必会占大量的内存,有可能还会导致单片机内存不够,如果能让几个不同时用到的数组和结构变量共享一段内存,则能省出很多的内存空间。
比如以下输入输出若不同时进行,则可以共享同一段内存空间
union {
&&&&&&&&&&&&& struct {
&&&&&&&&&&&&&&&&&&&& unsigned char&& F
unsigned char&& T
&&&&&&&&&&&&&&&&&&&& unsigned char&& S
&&&&&&&&&&&&&&&&&&&& unsigned long&& DataL&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&& unsigned char & Buffer[64];&&&&&&&&
&&&&&&&&&&&&& }DataO&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&& struct {
&&&&&&&&&&&&&&&&&&&& unsigned char&& F
unsigned char&& T
&&&&&&&&&&&&&&&&&&&& unsigned char&& S
&&&&&&&&&&&&&&&&&&&& unsigned long&& DataL&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&& unsigned char & Buffer[64];&
&&&&&&&&&&&&& } DataIn;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& } BOC;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&
C语言博大精深,丰富多彩,用得好能很好的发挥它的作用,同时学习好的编程方法养成良好的编程习惯对于一名设计人员来说也是极其的重要,以上四点都是本人自身积累和学习的一些总结,希望能够与大家一起共同交流,共同学习和提高。
&
以上若有不对或各网友觉得不妥之处还请不吝指出!
&
Liu_xf
相关资料:|||||||C语言学习总结-谈谈俺学单片机编程的几种新用法(转)来源网络,如有侵权请告知,即处理!编程Tags:                &                     上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
学习单片机的有关问题__ 悬赏分
下载积分:1500
内容提示:学习单片机的有关问题__ 悬赏分
文档格式:TXT|
浏览次数:0|
上传日期: 05:11:14|
文档星级:
该用户还上传了这些文档
学习单片机的有关问题__ 悬赏分
官方公共微信...学单片机有助于c++的学习,是这样的吗?_百度知道
...学单片机有助于c++的学习,是这样的吗?
但绝对和C++无关,和机器模式恰恰不同。C++是面向对象胡扯!可能有助于C语言的学习!
其他类似问题
为您推荐:
其他1条回答
这要看学什么单片机了。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 有助于学习的游戏 的文章

 

随机推荐