介绍STM32F407位带操作方法,设置寄存器的偏移量,实现按GPIO口指定位进行读写操作,方便编程。
【1】位带操作配置说明
**位段操作:实现51单片机中寄存器的操作方法。 **
【2】源代码
Sys.c文件增加以下代码:
#include "sys.h"
/*
函数功能:设置NVIC中断控制器优先级
函数形参:
IRQn_Type IRQn:中断线
uint32_t PreemptPriority:抢占优先级
uint32_t SubPriority:次优先级
*/
void SetNVICPriorityGrouping(IRQn_Type IRQn,uint32_t PreemptPriority, uint32_t SubPriority)
{
uint32_t Priority;
NVIC_SetPriorityGrouping(NVIC_PriorityGroup_2); //设置优先级分组,每个工程只能设置一次
Priority=NVIC_EncodePriority(NVIC_PriorityGroup_2,PreemptPriority,SubPriority); //编码优先级
NVIC_SetPriority(IRQn,Priority); //设置优先级
NVIC_EnableIRQ(IRQn);
}
Led.h 增加位带操作代码
#define LED0 PFout(9)
#define LED1 PFout(10)
#define BEEP PFout(8)
Key.h增加位带操作代码
#define KEY0 PEin(4)
#define KEY1 PEin(3)
#define KEY2 PEin(2)
#define KEY_UP PAin(0)
Main.c示例代码
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
int main(void)
{
u8 i,key;
LED_Init();
KEY_Init();
USART1_Init(84,115200);
while(1)
{
key=ScanKeyVal(0);
if(key)
{
i=!i;
LED0=!LED0;
LED1=!LED1;
}
}
}
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6035文章
44554浏览量
634653 -
寄存器
+关注
关注
31文章
5336浏览量
120231 -
51单片机
+关注
关注
274文章
5702浏览量
123493 -
GPIO
+关注
关注
16文章
1204浏览量
52054 -
STM32F407
+关注
关注
15文章
187浏览量
29437
发布评论请先 登录
相关推荐
STM32F407 DCMI摄像头源码
STM32F407 DCMI摄像头源码(电源技术存在的问题总结)-【资源描述】:STM32F407 DCMI摄像头源码【编程语言】:C语言
发表于 09-16 16:15
•127次下载
STM32F407与STM32F105 CAN通讯失败的定位解决
STM32F407与STM32F105的CAN通讯失败问题,经过一系列的测试分析,发现并解决问题,实现正常的CAN通讯。问题的现象STM32F407 板上安装25MHz晶体,作为HSE时钟,内部
发表于 12-02 16:51
•18次下载
STM32F407芯片介绍
1. 文档准备做嵌入式开发的第一步就是了解主芯片,了解STM32F407主要要关注几个文档:1. stm32F407芯片手册2. stm32F407参考手册3. Arm Cortex-M4数据手册
发表于 12-04 13:21
•109次下载
【STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
【STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
发表于 12-04 13:51
•21次下载
评论