前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STM32F407 位带配置步骤

STM32F407 位带配置步骤

作者头像
DS小龙哥
发布2023-07-08 20:08:42
2460
发布2023-07-08 20:08:42
举报
文章被收录于专栏:嵌入式项目开发

介绍STM32F407位带操作方法,设置寄存器的偏移量,实现按GPIO口指定位进行读写操作,方便编程。

【1】位带操作配置说明

位段操作:实现51单片机中寄存器的操作方法。

【2】源代码

Sys.c文件增加以下代码:

代码语言:javascript
复制
#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 增加位带操作代码

代码语言:javascript
复制
#define LED0 PFout(9) 
#define LED1 PFout(10) 
#define BEEP PFout(8)

Key.h增加位带操作代码

代码语言:javascript
复制
#define KEY0 PEin(4) 
#define KEY1 PEin(3) 
#define KEY2 PEin(2) 
#define KEY_UP PAin(0)

Main.c示例代码

代码语言:javascript
复制
#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;
				}
		}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【1】位带操作配置说明
  • 【2】源代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档