第一范文网 - 专业文章范例文档资料分享平台

GPIO输入输出(sys文件夹)

来源:用户分享 时间:2026/10/2 22:31:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

RCC->CR |= 0x00000001; //使能内部高速时钟HSION RCC->CFGR &= 0xF8FF0000;

//复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]

RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLON RCC->CR &= 0xFFFBFFFF; //复位HSEBYP

RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE RCC->CIR = 0x00000000; //关闭所有中断

//配置向量表 #ifdef VECT_TAB_RAM

MY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else

MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif }

RCC也是MDK定义的一个结构体,包含RCC相关的寄存器组。其寄存器名与STM32参考手册里面定义的寄存器名字是一摸一样的,所以在你不明白某个寄存器干什么用的时候,可以到STM32参考手册里面查找一下,你就可以迅速查到这个寄存器的作用以及每个位所代表的意思。

MY_NVIC_SetVectorTable函数的代码如下: //设置向量表偏移地址 //NVIC_VectTab:基址 //Offset:偏移量

void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset) {

//检查参数合法性

assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_param(IS_NVIC_OFFSET(Offset));

SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器

//用于标识向量表是在CODE区还是在RAM区 }

该函数是用来配置中断向量表基址和偏移量,决定是在那个区域。当在RAM中调试代码的时候,需要把中断向量表放到RAM里面这就需要通过这个函数来配置。关于向量表的详细介绍请参考<>第七章,第113页的向量表一章。

3)Sys_Soft_Reset函数

该函数用来实现STM32的软复位。 //系统软复位

void Sys_Soft_Reset(void) {

SCB->AIRCR =0X05FA0000|(u32)0x04; }

SCB为MDK定义的一个寄存器组,里面包含了很多与系统相关的控制器,具体的定义如下所示:

typedef struct {

vuc32 CPUID; //CM3内核版本号寄存器 vu32 ICSR; //中断控制及状态控制寄存器 vu32 VTOR; //向量表便宜量寄存器

vu32 AIRCR; //应用程序中断及复位控制寄存器

vu32 SCR; //系统控制寄存器 vu32 CCR; //配置与控制寄存器 vu32 SHPR[3]; //系统异常优先级寄存器组 vu32 SHCSR; //系统Handler控制及状态寄存器 vu32 CFSR; //MFSR+BFSR+UFSR vu32 HFSR; //硬件fault状态寄存器 vu32 DFSR; //调试fault状态寄存器 vu32 MMFAR; //存储管理地址寄存器 vu32 BFAR; //硬件fault地址寄存器

vu32 AFSR; //辅助fault地址寄存器 } SCB_TypeDef;

在Sys_Soft_Reset函数里面,我们只是对SCB-> AIRCR进行了一次操作,即实现了STM32的软复位。AIRCR寄存器的个位定义如下图所示:

图2.7.2.1 AIRCR寄存器各位定义

从上面的位定义可以看出,要实现STM32的软复位,只要置位BIT2,这样就可以请求一次软复位。这里要注意bit31~16的访问钥匙,要将访问钥匙0X05FA0000与我们要进行的操作相或,然后写入AIRCR,这样才被CM3接受。

4)Sys_SleepDeep函数

STM32提供了3种低功耗模式,以达到不同层次的降低功耗的目的,这三种模式如下: 睡眠模式(CM3内核停止工作,外设仍在运行); 停止模式(所有的时钟都停止); 待机模式;

其中睡眠模式又分为有深度睡眠和睡眠之分。Sys_SleepDeep函数用来使STM32进入待机模式,在该模式下,STM32所消耗的功耗最低。下面是一个STM32的低功耗一览表:

图2.7.2.2 STM32低功耗模式一览表

下表展示了如何进入和退出待机模式,关于待机模式的更详细介绍请参考《STM32参考手册》第4.3.5节(33页)。

搜索更多关于: GPIO输入输出(sys文件夹) 的文档
GPIO输入输出(sys文件夹).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2ydke1mk4x4zk8m0i2fc_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top