stm32F4系列库函数版本各模块配置过程

GPIO配置步骤:

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟

//GPIOF9,F10初始化设置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//LED0和LED1对应IO口

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIOF9,F10

可以一次初始化一个IO组下的多个IO,前提是这些IO口的配置方式一样。

按键配置:

使能按键对应IO口时钟。调用函数:

RCC_AHB1PeriphClockCmd ();//参照GPIO配置过程

初始化IO模式:上拉/下拉输入。调用函数:

GPIO_Init();//和GPIO配置过程一样

扫描IO口电平(库函数/寄存器/位操作)。

u8 KEY_Scan(u8 mode)

{

static u8 key_up=1;

if(mode==1) key_up=1;//支持连续按

if(key_up &&  KEY按下)

{

delay_ms(10);//延时,防抖

key_up=0;//标记这次key已经按下

if(KEY确实按下)

{

return KEY_VALUE;

}

}else if(KEY没有按下)  key_up=1;

return 没有按下

}

端口复用配置过程:

①GPIO端口时钟使能。

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

②复用外设时钟使能。

比如你要将端口PA9,PA10复用为串口,所以要使能串口时钟。

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

③端口模式配置为复用功能。 GPIO_Init()函数。

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能

④配置GPIOx_AFRL或者GPIOx_AFRH寄存器,将IO连接

到所需的AFx。

/*PA9连接AF7,复用为USART1_TX */

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);

/* PA10连接AF7,复用为USART1_RX*/

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);

例子:

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟 ①

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟 ②

//USART1端口配置③

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10

//串口1对应引脚复用映射 ④

GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1

GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1

中断优先级配置过程:

系统运行后先设置中断优先级分组。调用函数:

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

整个系统执行过程中,只设置一次中断分组。

针对每个中断,设置对应的抢占优先级和响应优先级:

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);

如果需要挂起/解挂,查看中断当前激活状态,分别调用相关函数即可。

例子:

typedef struct

{

uint8_t NVIC_IRQChannel; //设置中断通道

uint8_t NVIC_IRQChannelPreemptionPriority;//设置响应优先级

uint8_t NVIC_IRQChannelSubPriority; //设置抢占优先级

FunctionalState NVIC_IRQChannelCmd; //使能/使能

} NVIC_InitTypeDef;

NVIC_InitTypeDef   NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口1中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;// 子优先级位2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//IRQ通道使能

NVIC_Init(&NVIC_InitStructure);   //根据上面指定的参数初始化NVIC寄存器

串口配置:

①    串口时钟使能:RCC_APBxPeriphClockCmd();

GPIO时钟使能:RCC_AHB1PeriphClockCmd();

② 引脚复用映射:

     GPIO_PinAFConfig();

③GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF

④串口参数初始化:USART_Init();

⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

NVIC_Init();

      USART_ITConfig();

⑥使能串口:USART_Cmd();

⑦编写中断处理函数:USARTx_IRQHandler();

⑧串口数据收发:

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

⑨串口传输状态获取:

FlagStatus USART_GetFlagStatus();

void USART_ClearITPendingBit();

外部中断配置:

使能SYSCFG时钟:

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

初始化IO口为输入。

       GPIO_Init();

设置IO口与中断线的映射关系。

        void SYSCFG_EXTILineConfig();

初始化线上中断,设置触发条件等。

EXTI_Init();

配置中断分组(NVIC),并使能中断。

NVIC_Init();

编写中断服务函数。

EXTIx_IRQHandler();

清除中断标志位

      EXTI_ClearITPendingBit();

EXTI_InitStructure.EXTI_Line=EXTI_Line2;

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);

待记录。。。

原文地址:https://www.cnblogs.com/xiao-yong/p/8794528.html

时间: 2024-10-07 05:42:07

stm32F4系列库函数版本各模块配置过程的相关文章

STM32F4系列单片机上使用CUBE配置MBEDTLS实现pem格式公钥导入

|版权声明:本文为博主原创文章,未经博主允许不得转载. 最近尝试在STM32F4下用MBEDTLS实现了公钥导入(我使用的是ECC加密),整个过程使用起来比较简单. 首先,STM32F4系列CUBE里已经集成了MBEDTLS, MBEDTLS是ARM公司的开源加密库,遵守APACHE协议,大家可以随便使用MBEDTLS到开源和闭源项目上. 其次,除了ECC,MBEDTLS还支持AES系列对称加密,支持基于AES的NONCE生成,支持SHA系列摘要算法等,可以应用在各种加密场景. 1. 在CUBE

基础知识系列?各版本下IIS请求处理过程区别

转载地址→http://www.cnblogs.com/fsjohnhuang/articles/2332074.html ASP.NET是一个非常强大的构建Web应用的平台, 它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用. 绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices --这些都在ASP.NET层次结构在最高层. 这篇文章的资料收集整理自各种微软公开的文档, 通过比较 IIS5.IIS6.IIS7 这三代 IIS 对请求的处理过程, 让我

windows下MySQL5.6版本安装及配置过程附有截图和详细说明

官方网站http://dev.mysql.com/downloads/下载该软件 步骤1:双击MySQL安装程序 步骤2:单击图1.4中的“Install MySQL Products” 文字,会弹出的用户许可证协议窗口, 安装类型设置窗口,安装类型界面各设置项含义: Developer Default 默认安装类型 Server only 仅作为服务器 Client only 仅作为客户端 Full 完全安装类型 Custom 用户自定义安装类型 根据自己的情况选择安装,我们这里以自定义安装为

Linux下Mysql数据库互为主从的配置过程

配置准备: 两台机器:A(193.168.10.101)  B(193.168.10.102) mysql大版本需要一致,小版本可忽略 配置过程: A(193.168.10.101) 机器配置: 执行命令:vi /etc/my.cnf后在最后添加如下内容: log-bin=/var/lib/mysql/mysql-bin server-id=101 auto_increment_offset=1 auto_increment_increment=2 skip-slave-start log-sl

【MM系列】SAP MM模块-科目分配的配置

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-科目分配的配置 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 今天有人问科目分配的配置 想要在科目分配里增减内容: 方法如下: 路径:material management - purchasing - account assignment 找到Cost center - asset 

【SD系列】SAP SD模块-销售收入科目的配置

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP SD模块-销售收入科目的配置 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 配置路径: 销售和分销 - 基本功能 - 科目分配/成本 - 收入帐户确定 - 分配总帐科目 T-CODE: VKOA 半成品的配置半成品科目,原材料配置原材料科目 主数据科目设置组 不对,那么 MM02去修改 原文地址

STM32CubeMX新建工程+基本IO配置过程

Ⅰ.写在前面 学习本文之前可以查看我前面的文章: STM32CubeMX介绍.下载与安装 STM32CubeMX使用方法及功能介绍 本文接着上一篇文章结合基本IO配置实例,讲述关于STM32CubeMX新建工程的过程.最终通过STM32CubeMX工具配置完成一个驱动IO(点亮LED)的软件工程,也就是通过STM32CubeMX配置完成之后,打开工程直接下载就能点亮LED的工程. 本文使用Keil(MDK-ARM) V5软件为编译环境,如果你没有安装最新版本的软件,请安装最新版本的软件,具体过程

[转]caffe的配置过程

caffe的配置过程 转:http://blog.csdn.net/brightming/article/details/51106629 版权声明:本文为博主原创文章,欢迎转载!转载请写明原文链接出处! 这篇文章可参考:http://www.cnblogs.com/cj695/p/4498270.html 下载caffe拷贝Make.config.example Make.config修改Make.config 取消注释cpu-only,注释掉cuda相关的 -----------------

LINUX下PHP+MYSQL+APACHE配置过程

需要软件如下: apache: http://www.apache.org mysql: http://www.mysql.com php: http://www.php.net/downloads.php gd: http://www.boutell.com/gd/#buildgd ZendOptimizer http://www.zend.org/products/zend_optimizer Gettext http://ftp.gnu.org/pub/gnu/gettext/ netpb