STM32F407 位带配置步骤

发布时间: 2024-09-03
来源: 电子工程世界

介绍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;

 }

 }

 }


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。