查看: 179|回复: 0

[基础] STM32 HAL库stm32cubemx使用

[复制链接]

28

主题

0

好友

297

积分

秀才

Rank: 3Rank: 3

该用户从未签到

发表于 2017-8-17 09:55:39 |显示全部楼层
cube建立工程,cubemx起到的作用相当于在使用标准库时的初始化工作
cube使用模板流程1.选芯片
2.swdio,swclk引脚设置
3.时钟设置,中断设置(不要忘记勾选RXIT LINE...来使能和设置中断优先级)
4.在code generator中genrator files中勾选Generate peripheral。。。
5.填项目名字,改位置
6.改ide 选mdk5
mdk5中将工程添加自己编写的文件夹
1.在MDK-ARM文件夹外,新建自己的文件夹,里面新建inc和src
2.右键记事本形式打开mdk5工程文件
3.crtl+f找到Ctrl+c复制的Application/MDK-ARM的位置,在其旁边添加
<Group>
<GroupName>自定义</GroupName>
</Group>
4.在c/c++中将inc的目录添加进去
5.勾选output中产生hex,和debug中flash down中reset and run
6.在自定义中添加.h文件,用新建然后保存到inc中,在自定义中添加.h文件,右键点击左侧的自定义文件夹,添加新的文件,将位置改为src中
7.引脚定义和全局变量都在main.h中,每个驱动的头文件都引用main.h和
#include "stm32f0xx_hal.h"
main.h中#include "stdint.h"
加上
typedef int32_t s32;
typedef int16_t s16;
typedef int8_t s8;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
main函数中用到的头文件写在main.c中
8.注意代码要写在相应的区域内,否则用cubemx修改工程时会被改掉,while中的大循环写在while(1)下和/* USER CODE END WHILE */上的中间
引脚输出都用宏定义
9.main函数中只放应用的执行函数,形式是void(void)这种,定义在触发动作的驱动中定义
10.定时器和串口接收中断一定要在记得一般在while大循环开始前开启,HAL库不会自动开启这两个中断,定时器的中断还可以用函数关闭,串口接收的中断,接收一次会自动关闭,所以要在接收一次后再打开它
11.中断里设置的值,刚设完就被改变,可能是在主函数大循环中或者其他中断中又被改了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /5 下一条

手机版|爱板网 |网站地图  

GMT+8, 2017-10-23 12:12 , Processed in 0.351400 second(s), 9 queries , Memcache On.

苏公网安备 32059002001056号

Powered by Discuz!

回顶部