开始学习stm32
2017-05-22 本文已影响139人
greedyhao
说说我的教材吧
手上暂时没有其他的书了,就只能将就着用这本了,不过听说口碑还是不错的。
配置开发环境
MDK5 FlyMcu这两个是必要的开发程序,网上随便一搜一大把教程。MDK5是可以安装C51的库进行51单片机的开发的,MDK5还有实时语法检测,用起来很爽。
除了这两个软件以外,还要进行stm32的配置(应该叫做 新建基于固件库的MDK5工程模板,网上也是一堆教程。
学到的新知识
- stm32居然有多个时钟源,这是我之前不知道的,多个时钟源的原因是为了节省资源,时钟越快功耗越大,同时抗电磁干扰能力也会越弱,而有些外设需要的时钟并不需要太快,所以stm32通过分频,不同的5个时钟源给不同的外设。
- 结构体的使用。之前学习51单片机时,其实很多c语言的知识都没有用上的,一直不明白那些知识的用处。在我看stm32的固件库的时候,看见了很多函数的参数都是用结构体来传递的,这样的好处是参数的个数比较容易更改,只需要更改结构体中的参数个数就可以了。
- 定义自己的类型。这也是我在看stm32的固件库才了解到的,虽然我很久以前就知道要定义自己的数据类型,但一直都很少用,因为作用不大,在stm32固件库中看见了大量的使用,固件库中所有的数据类型都是使用自己的定义,我觉得这样的好处是可以增加程序的易读性和兼容性。
/*stm32f10x.h*/
...
typedef struct
{
__IO uint16_t CR1;
uint16_t RESERVED0;
__IO uint16_t CR2;
uint16_t RESERVED1;
...
} TIM_TypeDef;
...
/*stm32f10x_tim.h*/
...
void TIM_DeInit(TIM_TypeDef* TIMx);
...
这是固件库中的一段对结构体的用法和定义自己的数据类型。