教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

liminary1138学习手记

来源:网络收集 时间:2026-01-15
导读: 关于文件........................................................................................................................................... 2 1、Bit-band位操作 .......................................................................

关于文件........................................................................................................................................... 2 1、Bit-band位操作 .......................................................................................................................... 2 2、中断............................................................................................................................................. 3

抢占优先级 ............................................................................................................................... 3 3、系统控制 ..................................................................................................................................... 5 4、定时器......................................................................................................................................... 5 5、模拟比较器COMP .................................................................................................................... 6 6、模数转换ADC ........................................................................................................................... 6 7、滴答定时器 ................................................................................................................................. 6 8、接口部分 ..................................................................................................................................... 7

(1)UART .............................................................................................................................. 7 (2)SSI ................................................................................................................................... 9 (3)I2C ................................................................................................................................. 10

经过这几天的学习,对比之前几天的stm32的学习(由于暂时缺少板子,临时改变,stm32看了大概两周,而esayarm1138已经五天有余),感觉要容易很多。可能是由于函数库的原因吧。

对于32位的编程,一个整体的框架就是:首先是对相关外围模块的使能或者说是时钟的使能,紧接着就是相关端口模块的使能与端口的配置作业,用得到中断的地方要开中断,当然要全部开放的,少一个中断就无法进行,再就是模块的使能了。对于中端处理函数来说,首先是得注册的,这样才能对相关的中端进行处理。具体的中端操作是,读状态,清中断,然后才是相关的处理。

要实现一个功能,就得用得其中的模块,所以首先我们要做的事是能该模块,可以由函数SysCtlPeripheralEnable(xxxx)实现;当然不也得用带芯片的某些或者某个管脚,这就要求我们来使能管脚所在的端口(GPIOx),仍然可以由函数SysCtlPeripheralEnable(xxxx)实现,对于stm32来讲似乎是时钟使能吧?再然后就是管脚的配置了,像输入输出,上拉下拉,uart,i2c等等吧,都有具体的函数(GPIOPinTypexxxx())来实现,当然,对于有些模块来说最后我们还得使能该模块的端口(如UART)。

关于文件

hw_memmap.h -- 宏定义memory map

hw_xx.h --宏定义某个片内或者外围设备的寄存器地址其中包含了某

个寄存器位

xx.h -- 声明函数 xx.c -- 定义函数

1、Bit-band位操作

#define HWREGB(x) (*((volatile unsigned char *)(x)))

对存储单元或寄存器当中某一位的访问,按照传统的“读-改-写”分三步走的操作模式,效率不高;而采用“bit-band”后成为“直接读”和“直接写”,效率明显提高。在整个4GB存储空间里划分出了2个位操作区域,可以分别支持对片内SRAM和片内外设的位操作。

Stellaris器件内部的SRAM的地址是0x2000.0000,为了减少读-修改-写(RMW) 操作的时间,ARM在Cortex-M3处理器中引入了bit-banding技术。在bit-banding使能的处理器中,存储器映射的特定区域(SRAM和外设空间)能够使用地址别名,在单个原子操作中访问各个位。只改变其中的一位。

使用下面的公式来计算bit-band别名:

bit-band别名 = bit-band基址 + (字节偏移量 * 32) + (位编号 * 4)??这里就说明了在

宏定义中左移5位与左移2位的情况了

如果要修改地址0x2000.1000的位3,则bit-band别名计算如下: 0x2200.0000 + (0x1000 * 32) + (3 * 4) = 0x2202.000C 也就是((0x22001000)&(0xF0000000))|(0x02000000)|(((0x000FFFFF)&(0x22001000))<<5)|((0xb)<<2)

2、中断

具体的操作步骤如下:

1、某个模块的使能,进行必要的基本配置 2、配置中断类型

3、调用片内外设具体中断的使能函数

调用函数IntEnable( ),使能片内外设的总中断 调用函数IntMasterEnable( ),使能处理器总中断 4、编写具体的中断服务函数:读状态GPIOPinIntStatus( )、清状态GPIOPinIntClear( ),判断、操作

5、注册中断处理函数,一是直接利用中断注册函数,另一种方法需要修改启动文件 修改启动文件的方法如下:

Keil 在Keil开发环境下,启动文件“Startup.s”是用汇编写的,以中断服务函数“void I2C_ISR(void)”为例,找到“Vectors”表格,在其前面插入声明 EXTERN I2C_ISR

再根据“Vectors”表格的注释内容找到外设I2C0的位置,把相应的“IntDefaultHandler”替换为“I2C_ISR”,完成。

IAR 在IAR开发环境下,启动文件“startup_ewarm.c”是用C语言写的,很好理解。仍以中断服务函数“void I2C_ISR(void)”为例,先在向量表的前面插入函数声明: void I2C_ISR(void);

然后在向量表里,根据注释内容找到外设I2C0的位置,把相应的“IntDefaultHandler”替换为“I2C_ISR”,完成。

抢占优先级

由函数IntPriorityGroupingSet( )设置中断控制器的优先级分组

Cortex-M3用8位来设置优先级,但在stm32中仅用4位来设置优先级。 对于同一抢占优先级的中断来说,即便是优先级高的也不能中断正在执行的中断,只有高抢占优先级的中断方可中断正在执行中的中断。应该是这么理解的。还有一些疑问,有待进一步解决。

下边的五行我个人认为是stm32的关于嵌套中断的说法:

0位抢占优先级,4位子优先级:设置为16级子优先级,不使用抢占式优先级; 1位抢占优先级,3位子优先级:设置为8级子优先级,2级抢占式优先级;

2位抢占优先级,2位子优先级:设置为4级子优先级,4级抢占式优先级; 3位抢占优先级,1位子优先级:设置为2级子优先级,8级抢占式优先级; 4位抢占优先级,0位子优先级:设置为不使用子优先级,16级抢占式优先级;

再回到luminary1138,,举例说明一下这个问题:KEY1的中断优先级高于KEY2的,如果函数IntPriorit …… 此处隐藏:4170字,全部文档内容请下载后查看。喜欢就下载吧 ……

liminary1138学习手记.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447090.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)