快捷搜索:  汽车  科技

学stm32要会c语言吗(C语言很差学STM32会不会很难)

学stm32要会c语言吗(C语言很差学STM32会不会很难)Int n=0;//先定义一个变量,用来保存计算结果不用函数的写法:void main(void){

学stm32要会c语言吗(C语言很差学STM32会不会很难)(1)

这篇文章是紧接着上一篇的后续。

疑问二、我C语言那么差学起来会不会很难?

很多人都觉得,我的C语言那么烂,学STM32会不会很难。曾经的我也有这样的想法,那是因为还没真正的了解STM32的软件编程。

用于STM32编程的语言有三种分别是汇编,C语言和C 。其实每一个STM32程序项目都使用了汇编,STM32的配置文件就是使用汇编语言编写的,但是平时我们做开发的时候一般不用去管他,平时使用最多得的还是C语言,C 的也有但很少人用。STM32的开发方式也是有三种分别是寄存器方式,库函数方式和寄存器库函数混合方式。8051的单片机就是以寄存器的方式来编程的。而STM32其实也都是以寄存器的方式来编程的,但是STM32芯片内有几百个寄存器,如果以这种方式来开发的话,每次都要找资料查看每一个寄存器的配置方法。这样的话效率就慢了许多,所以就有了库函数的开发方式。什么是库函数?先解释什么是函数吧,函数也是C语言的一个知识点,当初我在学C语言的时候,一开始我也不知道什么是函数,也许是老师没说清楚,所以不理解,如果理解了就知道C语言中的函数也不过如此。下面举几个例子就明白了。比如说现在有两个未知数x1和x2我要把两个数相乘再加10。用数学表达就是:x1*x2 10=结果

不用函数的写法:

void main(void)

{

//先定义一个变量,用来保存计算结果

Int n=0;

n=x1*x2 10;

}

用函数的写法:

先定义一个函数,函数的作用是要计算两个未知数。然后得到结果。那么就要函数返回一个数。

函数为:

int jisuan(int x inty)

{

return x1*x2 10;

}

//主函数,就是程序运行的开始。

void main(void )

{

Int n=0; //定义一个变量用来保存结果

n=jisuan(x1 x2); //这是函数的调用,这样就得到结果了。

}

用函数的好处就是,我不需要知道你里面的计算过程,我只要知道我把值放进去就可以得到我需要的结果了。

在C语言中经常会用到printf();函数,这个函数的作用就是可以把我们想要知道的东西输出又或者叫打印。你知道怎么去用这个函数,但是你不用知道它里面做了什么事情,就是这个道理。

回到之前哪里,所谓的库函数就是把配置不同的寄存器的过程代码用函数包装起来,把这些函数整理到一个文件里面就成了库。就叫库函数。

以这种方式开发,虽然看起来代码很多,但是很多东西都是有固定的一些参数,并不需要我们自己去想。给一个STM32引脚配置的例子就知道了:

void LED_Init(void)//这是一个函数,作用是把STM32使用到的引脚配置的代码段包装起来。

{

//这是一个声明,跟其他的哪些变量声明是一样的。

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD ENABLE);//使能PA PD端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 端口配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz

GPIO_Init(GPIOA &GPIO_InitStructure); //根据设定参数初始化

GPIO_SetBits(GPIOA GPIO_Pin_8); //PA.8 输出高

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PD.2 端口配置 推挽输出

GPIO_Init(GPIOD &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz

GPIO_SetBits(GPIOD GPIO_Pin_2); //PD.2 输出高

}

上面这段代码的内容都不用自己写,把其他地方的复制过来把参数更改一下就可以了。下面这段代码就是整个实验的运行代码:

int main(void)

{

delay_init(); //延时函数初始化,就是一些配置的代码段。

LED_Init(); //这个就是上面的那个函数,在这里使用,高大上的叫法叫函数的调用,代码运行到这里的话就会跑到上面哪里运行哪些代码段

while(1)

{

LED0=0;

LED1=1;

delay_ms(300); //延时300ms

LED0=1;

LED1=0;

delay_ms(300);//延时300ms

}

}

所以说真正自己要写的其实很少。不要被他的外观所欺骗了,以为C语言差很难学。

我觉得知道以下几个C语言的知识点就可以完成基础的STM32的实验:

要知道C语言执行的开端。所有的C语言程序都包含main()函数(什么是函数待会再解释)。无论多么复杂的程序都是从main()函数开始执行。所以我们在看一段代码的时候可以先从main()函数开始一步一步往下看,就知道它走的每一步都做了什么事情。

要知道C语言量意思。无非就是常量跟变量,而常用的变量就是整型(int)字符型(char) 浮点型(float)这几个。其实知道有这个东西就可以了,多用几遍记住了。

C语言在于理解,不在于死记硬背。学好C语言就像玩一个闯关游戏,你首先要先了解一下规则,然后就尽情的闯关,一开始输了,没关系,从新再来,因为你有无数次复活的机会。

学好STM32也是在于理解,理解别人怎么使用哪些库函数。要理解配置的完整流程。很多的STM32开发都不是闭卷考试,所以都是可以相互参考,相互复制。

这些都是我本人的学习经验和学习方法,别人适不适那就不好说了。如果觉得有用,请收藏加关注,后期会以我的方法教你们做STM32实验.

猜您喜欢: