stm32的普通GPIO编程的工程中到底要包含哪些文件?怎么连流水灯也有那么多文件啊? 感觉跟普通的单片机
的用法相差好大啊!我看main函数中也只包含一个头文件啊,怎么工程中有那么多文件,不要可不可以?到底stm32是怎么编程的,我看程序很多时候都在调用固件库的函数啊,调用固...
的用法相差好大啊!我看main函数中也只包含一个头文件啊,怎么工程中有那么多文件,不要可不可以?到底stm32是怎么编程的,我看程序很多时候都在调用固件库的函数啊,调用固件库是不是用stm32编程的基本思想啊?以前我用51编程很少调用函数库的,感觉一下子思维转不过来了
展开
3个回答
展开全部
嘿嘿,那是当然了,STM32是32位单片机,51是8位机,两者不是一个数量级的。
51单片机的I/O口就是I/O口,没那么多功能,
而STM32呢,它的GPIO口既可以做数字I/O,有些也可以做A/D,D/A,有些可以做SPI或者I2C对外通讯,还有些是做PWM脉宽输出,功能各有不同。这些功能都需要实现配置好才能让单片机知道你打算怎么用这些口。51简单死了,没有A/D,D/A,没有SPI通讯,也没有PWM,就是I/O,每个口也只有那么一个寄存器,直接读写就完了。
而到了32位机就不一样了,那么多功能,那么多寄存器,如果不用库的话,就要一位一位地把每个寄存器都设好,非常麻烦。ST专门给STM32编制了一个函数库,所有的函数库设置你只需要调用函数库的函数就好。如果你英语还说得过去的话,看着函数库就可以基本不用去每一位对寄存器了,牺牲了效率,但是非常非常的方便。
至于使用起来,也非常简单,比如你要用GPIO,你就把STM32F10X_GPIO.C加到你的工程文件中去,然后在你在程序里引用一下#include "stm32f10x.h",就可以了。当然,我觉得这么做还要一个一个文件地想,到底需要不需要,干脆把所有的C文件都加到工程里去,然后在编译器里打开Level-2优化,这样没有用到的函数都不会被编译到最终的hex文件中去了。想用到什么函数都可以,非常方便的。
51单片机的I/O口就是I/O口,没那么多功能,
而STM32呢,它的GPIO口既可以做数字I/O,有些也可以做A/D,D/A,有些可以做SPI或者I2C对外通讯,还有些是做PWM脉宽输出,功能各有不同。这些功能都需要实现配置好才能让单片机知道你打算怎么用这些口。51简单死了,没有A/D,D/A,没有SPI通讯,也没有PWM,就是I/O,每个口也只有那么一个寄存器,直接读写就完了。
而到了32位机就不一样了,那么多功能,那么多寄存器,如果不用库的话,就要一位一位地把每个寄存器都设好,非常麻烦。ST专门给STM32编制了一个函数库,所有的函数库设置你只需要调用函数库的函数就好。如果你英语还说得过去的话,看着函数库就可以基本不用去每一位对寄存器了,牺牲了效率,但是非常非常的方便。
至于使用起来,也非常简单,比如你要用GPIO,你就把STM32F10X_GPIO.C加到你的工程文件中去,然后在你在程序里引用一下#include "stm32f10x.h",就可以了。当然,我觉得这么做还要一个一个文件地想,到底需要不需要,干脆把所有的C文件都加到工程里去,然后在编译器里打开Level-2优化,这样没有用到的函数都不会被编译到最终的hex文件中去了。想用到什么函数都可以,非常方便的。
展开全部
其实要用GPIO,在工程里面需要加入gpio、rcc、flash、lib。对于使用了不同的外围器件,就要相应的选择不同的文件,但是flash、rcc和lib是一定要有的。写的程序你可以用thumb-2,也可以用写寄存器的方法,但是很多人会选择固件库,因为使用方便,开发效率快,但是有时候也会出现一些问题的,其实如果想学好STM32,写寄存器是不错的选择。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘿嘿,那是当然了,STM32是32位单片机
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询