|
为了学习同样使用STM32芯片的crazepony我购买了STMduino的小车。之前看了版主发的教程,发现除了IIC与实际代码有些许区别外其它还是很好懂的,但是唯独缺少最基本的键盘控制部分代码的讲解,我不知道是不是因为相关内容太基础了,但我认为对初学者来说,这部分的代码才是最重要的。而且相比51duino,STM32的基础控制代码有些位置比较隐蔽,所以我想对版主的讲解作一个补充。
相关功能涉及的c文件分别为:stm32f10x_it.c,main.c,function.c,Motor.c,Config.c,Time_test.c,usart1.c
其中最重要的四个文件是前四个。
我当时忽略了stm32f10x_it.c,因为这个文件从命名上感觉像系统文件,其实里面的是串口中断的处理代码,而51duino小车里相关部分是放在uart.c也就是串口相关的代码中的。然后Config.c也容易被忽视,因为里面其实放了根据电击动作指令设置GPIO高低电位的代码,但是名称上没有写明。然后Time_test.c的作用主要是通过PWM来进行电机调速的,相关函数在Motor.c里调用了。
具体的流程是main.c函数首先进行初始化,其中包括了串口初始化和PWM相关的初始化。然后当系统收到串口数据后会在stm32f10x_it.c里调用中断处理函数USART1_IRQHandler,成功组成数据包以后会调用function.c中的Communication_Decode,如果是键盘输入的移动命令,就会调用相关的motor_go_forward等函数了,这些函数在Motor.c里实现。具体都是先通过PWM设置速度(Time_test实现),然后调用Motor_IN_forward_A等函数给GPIO置高低位,这些实现都在Config.c里。
以上情况,由于crusing_flag是0所以main里循环调用crusing函数没实际效果。
但是我依然有个疑惑,为什么好多的源代码放在driver文件夹下,因为好多操作与我们普遍认知中的驱动程序有区别。当然我还没仔细看完driver中的所有代码,所以理解可能有失偏颇。
|
评分
-
查看全部评分
|