51uwb.cn
标题:
配置STM32 中断引脚 -- DWM1000 IRQ 【STM32 基础知识】
[打印本页]
作者:
tuzhuke
时间:
2019-3-19 21:48
标题:
配置STM32 中断引脚 -- DWM1000 IRQ 【STM32 基础知识】
为了管理方便,论坛是邀请制,如果需要注册论坛,点击论坛上方的“店铺”,旺旺联系免费获得邀请码
DWM1000 本身有很多中断控制,例如发送完成中断,接收完成中断等等, 可以通过IRQ(GPIO8) 送到外部控制器。
DWM1000 IRQ pin可以挂到STM32 的外部中断上。 例如当接收到数据帧后,DWM1000 拉IRQ,STM32 实时处理接收到的数据帧。之前代码没有用到中断部分,这里补上一些相关内容。
1 STM32 与 DWM1000 IRQ连接原理图
从原理图上看,
IRQ 连到的PB0上
(, 下载次数: 918)
上传
点击文件名下载附件
2宏定义修改
#define DECAIRQ GPIO_Pin_0
#define DECAIRQ_GPIO GPIOB
#define DECAIRQ_EXTI EXTI_Line0
#define DECAIRQ_EXTI_PORT GPIO_PortSourceGPIOB
#define DECAIRQ_EXTI_PIN GPIO_PinSource0
#define DECAIRQ_EXTI_IRQn EXTI0_IRQn
#define DECAIRQ_EXTI_USEIRQ ENABLE
#define DECAIRQ_EXTI_NOIRQ DISABLE
复制代码
3 增加中断处理函数(点亮LED灯)
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(DECAIRQ_EXTI)!= RESET)
{
EXTI_ClearITPendingBit(DECAIRQ_EXTI);
led_on(LED_ALL);
}
}
复制代码
4 配置外部中断 NVIC
int NVIC_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
// Enable GPIO used as DECA IRQ for interrupt
GPIO_InitStructure.GPIO_Pin = DECAIRQ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //IRQ pin should be Pull Down to prevent unnecessary EXT IRQ while DW1000 goes to sleep mode
GPIO_Init(DECAIRQ_GPIO, &GPIO_InitStructure);
/* Connect EXTI Line to GPIO Pin */
GPIO_EXTILineConfig(DECAIRQ_EXTI_PORT, DECAIRQ_EXTI_PIN);
/* Configure EXTI line */
EXTI_InitStructure.EXTI_Line = DECAIRQ_EXTI;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //MPW3 IRQ polarity is high by default
EXTI_InitStructure.EXTI_LineCmd = DECAIRQ_EXTI_USEIRQ;
EXTI_Init(&EXTI_InitStructure);
/* Set NVIC Grouping to 16 groups of interrupt without sub-grouping */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
/* Enable and set EXTI Interrupt to the lowest priority */
NVIC_InitStructure.NVIC_IRQChannel = DECAIRQ_EXTI_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = DECAIRQ_EXTI_USEIRQ;
NVIC_Init(&NVIC_InitStructure);
/* Enable the RTC Interrupt */
//NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;
//NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 10;
//NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
//NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//NVIC_Init(&NVIC_InitStructure);
return 0;
}
复制代码
5 硬件初始化调用上述函数
void peripherals_init (void)
{
……
NVIC_Configuration();
//AT24C16_TEST();while(1);
}
复制代码
6 编译下载,将IRQpin 拉高,观察LED灯
(, 下载次数: 17)
上传
点击文件名下载附件
(, 下载次数: 4)
上传
点击文件名下载附件
作者:
淮工王大师
时间:
2019-4-30 08:15
BPHero_UWB_Location_SourceCode_V1.1_16MHz
这个代码是不是和中断没有关系?
没有看到以上代码的配置。
作者:
tuzhuke
时间:
2019-4-30 09:47
淮工王大师 发表于 2019-4-30 08:15
BPHero_UWB_Location_SourceCode_V1.1_16MHz
这个代码是不是和中断没有关系?
没有看到以上代码的配置。
是的,正式release 出来的代码没有用到这个部分
作者:
CAUCSYD
时间:
2019-6-20 00:55
谢谢大牛分享
作者:
Violet
时间:
2024-4-11 10:48
感谢分享。。。。。。。。。
作者:
吱吱吱
时间:
2024-4-19 09:09
好资料感谢分享
欢迎光临 51uwb.cn (http://51uwb.cn/)
Powered by Discuz! X3.3