2025年4月8日 星期二 乙巳(蛇)年 正月初九 设为首页 加入收藏
rss
您当前的位置:首页 > 电子 > 单片机

STM32F407 位带配置步骤

时间:11-08来源:作者:点击数:28

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

【1】位带操作配置说明

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

img
img
img
img

【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;
  • }
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐