本帖最后由 Ben666 于 2021-2-2 10:49 编辑
对at32的一些常用外设和模块进行了封装,把at32和stm32进行了对比,发现两款单片机的兼容性确实挺高的。由于放假的原因所以目前手上只有 Stm 32F103和F429做对比,而at32407是以F1做对照的,所以以下对皆与103进行对比。
目前发现的stm32和at32最大的区别还是时钟树了
at
st
而外设功能框架at对st几乎完全兼容
at
st
而重库函数也可以看出at如果要使用stm32以前封装的文件只需要做非常少量的代码修改即可。
本次手势识别使用的是 APDS 9930,会使用到i2c和外部中断,同时还封装了一些其他常用外设及模块后续会陆续上传。在本次封装的过程中又学习到了不少以前没有注意到的知识。
首先是afio的问题,因为本人入门学习的是f4所以对f1的一些概念不是特别清楚。以前第一次f1使用外部中断一直不能正常触发,看了网上的教程之后才知道需要开启afio的时钟,一直不是特别明白为什么,外部中断管我afio什么事,这次在封装的过程中进行测试发现只有在使用GPIOA以外的端口时才需要开启AFIO时钟。
而这次使用到的i2c
at也对stm32完全兼容,就比st多了一组。
使用的拓展板为以前学习esp8266所绘制的需要的,可以在立创开源平台上找。为了匹配arduino接口,所以需要使用到afio。已经使用宏定义封装好了可以直接使用
对手册和库函数的学习发现at和ST的 i2c的最高为400k速率相同。但在实际测试过程中,at32f407在400k的情况下(测试对象为dht12和9930), i2c通信会发现错误,而st不会,具体原因需要等开学后拿到工具再深究.所以目前使用i2c请将速率调到400k以下。
目前已封装部分
因为文件太大,只上传了部分。直接加入直接的工程即可使用。
|