打印
[其他ST产品]

stm32战舰之路

[复制链接]
6369|117
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hehhehee|  楼主 | 2021-12-30 13:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
库函数版本与寄存器版本
一、新建工程

1、建立一个工程文件夹TEST,在文件夹新建一个文件夹USER

2、打开MDK5(keil5),project-->newproject,工程路径放到刚才建立的USER文件夹下,命名为test,再根据开发板芯片选择相匹配的类型 ,到这一步,我们已经建立一个框架了。还需要启动代码和一些.c文件。

3、添加启动代码,使用的是原子哥资料,这里根据实际路径添加。程序源码-->stm32启动文件-->大容量hd.s(做法:  双击group1,把启动文件添加进来即可)

4、在工程文件夹下新建OBJ文件夹,修改编译文件路径把原始默认路径都改到OBJ文件夹下。

5、给工程添加文件夹和添加头文件路径。添加分组文件夹是点击编辑器像“品”字那个图标,进行添加即可,头文件路径是点击魔术棒那个图标,进行相应操作即可。

注:库函数版本也是类似,都是先建立一个框架,然后往新建目录添加启动文件和.c文件。

使用特权

评论回复
沙发
hehhehee|  楼主 | 2021-12-30 13:10 | 只看该作者
stm32命名规则:

使用特权

评论回复
板凳
hehhehee|  楼主 | 2021-12-30 13:11 | 只看该作者
二、学习方法

1、掌握时钟树图

使用特权

评论回复
地板
hehhehee|  楼主 | 2021-12-30 13:11 | 只看该作者
2、存储器和总线架构

使用特权

评论回复
5
hehhehee|  楼主 | 2021-12-30 13:12 | 只看该作者

使用特权

评论回复
6
hehhehee|  楼主 | 2021-12-30 13:12 | 只看该作者

使用特权

评论回复
7
hehhehee|  楼主 | 2021-12-30 13:13 | 只看该作者

使用特权

评论回复
8
hehhehee|  楼主 | 2021-12-30 13:14 | 只看该作者

使用特权

评论回复
9
hehhehee|  楼主 | 2021-12-30 13:15 | 只看该作者

使用特权

评论回复
10
hehhehee|  楼主 | 2021-12-30 13:26 | 只看该作者
3、多实践,多思考。

使用特权

评论回复
11
hehhehee|  楼主 | 2021-12-30 13:32 | 只看该作者
三、stm32中断分组

STM32中断总共分为5组:0~4组。由SCB->AIRCR寄存器的第8~10bit控制。每个可屏蔽中断占8bit,只有高4bit起作用(7~4bit)

第0组:111  ,  0位抢占优先级,4位响应优先级   

第1组:100  ,  1位抢占优先级,3位响应优先级  

第2组:101  ,  2位抢占优先级,2位响应优先级

第3组:100  ,  3位抢占优先级,1位响应优先级

第4组:011  ,  4位抢占优先级,0位响应优先级

高抢占优先级可以打断低抢占优先级,高响应优先级不可以打断低响应优先级。\

使用特权

评论回复
12
hehhehee|  楼主 | 2021-12-30 13:33 | 只看该作者
中断优先级设置步骤:

1、系统运行开始时时候设置中断优先级分组,确定组号,调用NVIC_PriorityGroupConfig()函数

使用特权

评论回复
13
hehhehee|  楼主 | 2021-12-30 13:49 | 只看该作者
2、设置所用到中断的中断优先级别。调用NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)函数

其中NVIC_InitTypeDef结构体如下所示,基本在配置时就是按此结构体成员变量来进行的。

使用特权

评论回复
14
hehhehee|  楼主 | 2021-12-30 13:50 | 只看该作者
typedef struct

{
    uint8_t NVIC_IRQChannel;

   uint8_t NVIC_IRQChannelPreemptionPriority;

   uint8_t NVIC_IRQChannelsubPriority;

   FunctionalState NVIC_IRQChannelCmd;

}NVIC_InitTypeDef;

使用特权

评论回复
15
hehhehee|  楼主 | 2021-12-30 13:50 | 只看该作者

使用特权

评论回复
16
hehhehee|  楼主 | 2021-12-30 13:51 | 只看该作者

使用特权

评论回复
17
hehhehee|  楼主 | 2021-12-30 14:19 | 只看该作者
注意:1、如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行;2、高优先级的抢占优先级是可以打断正在进行地抢占优先级中断的,而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。

使用特权

评论回复
18
hehhehee|  楼主 | 2021-12-30 14:20 | 只看该作者
四、IO口模式配置:8种模式

1、上拉输入:GPIO_Mode_IPU

2、下拉输入:GPIO_Mode_IPD

3、浮空输入:GPIO_Mode_IN_FLOATING

4、模拟输入:GPIO_Mode_AIN

5、推挽输出:GPIO_Mode_Out_PP

6、开漏输出:GPIO_Mode_Out_OD

7、推挽式复用功能:GPIO_Mode_AF_PP

8、开漏复用功能:GPIO_Mode_AF_OD

使用特权

评论回复
19
hehhehee|  楼主 | 2021-12-30 14:21 | 只看该作者
每个IO端口都由7个寄存器来控制

2个32位模式配置寄存器:CRL、CRH

2个32位数据寄存器:IDR、ODR

1个32位置位/复位寄存器:BSRR

1个16位复位寄存器BRR

1个32锁存寄存器:LCKR

使用特权

评论回复
20
hehhehee|  楼主 | 2021-12-30 14:22 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

934

帖子

0

粉丝