我是买了个 NUCLEO stm32f072rb和普通stm32f103开发板之后,才开始关注stm32的,之前一直玩arduino这类电子积木,也学过郭天祥的51视频。
最近开始弄stm32,有n个不懂的地方。
首先是 官方库。
1,这个官方库是所有stm32都用同样的函数,还是对应每个stm32类型,有一个自己的库?
如果是后者的话,那每使用一款stm32,如用stm32f072 后换用stm32f103做东西。我是不是还要重新学一遍103的库函数?
这样的话,也太繁琐了啊。
2,上面的疑惑是因为,我手头有论坛这个072板子,但是听的是刘洋的stm32f103的视频课(听说挺好才听的)。
所以我就按照视频里面103板子的库模板建立方法,在咱论坛找到了072库链接下载来做库模板。
我按着他的视频写led亮灯,结果
GPIO_InitTypeDef GPIO_InitStructure;
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
这里面的【RCC_APB2Periph_GPIOB】【GPIO_Mode_Out_PP】程序提示没有,出现红叉。我找h文件,看到GPIO模式里面真没有这个,只有4个模式。
不知道是不是103和072差异问题,还是我的库文件找的被别人删过的。
3,我手头有一个stm32 f103的板子,里面已经有boot程序和正常程序了。我用STM32 ST-LINK Utility.exe写103灯的hex文件到103板子,板子没有led亮,并且我擦除程序,再弄以前的boot和正常程序,boot可以,正常程序下载不了了。请问这是为什么呢?STM32 ST-LINK Utility.exe是不是把程序写到了boot区?
4,刚才按论坛朋友帖子,用CUBE生成了072的led代码,也在while里面写了个开关,灯确实亮了。可是我发现,CUBE生成的程序是HAL的库写的。
这个HAL记得是硬件抽象层的意思?这么说来它的移植性更好??那我到底该学什么库,能让072,和103板子都能使用啊?
这个HAL库,不会还要学吧,蒙了,蒙了,蒙了。。。。无助的少年。。。
5,这几天,只有今天早上led亮了,之前还遇到了CUBE无法生存工程文件问题(后来知道是文件名不能有中文)。STM32我一定要学会!虽然我现在什么也不知道。我在学校图书馆里面借了本最大的stm32的书,回来打开发现跟官方函数库说明书一样,这个作者估计不是蠢材就是大学教授学习学成了呆子。只写一个函数,下面写函数的功能,就完事了。这就是一本书。然后标题还写着,本书适合未接触过STM的人。大家能帮忙推荐适合新人的stm32的好书吗?
走在陌生的未知的却很喜欢的学习路上,我相信只要真心想学,一定能学会的!求大家帮忙回答我的问题。谢谢。我学习的第一个目标就是
能独立编写飞行器控制程序。像这里bbs.tryfly.cn/forum-36-1.html的劲飞翔CC3D飞行控制器。因为我也喜欢航模。再次谢谢大家。
|