请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP-EXP430F5529LP 工具/软件:TI-RTOS
我希望配置GPIO引脚以中断来自DS3231 RTC芯片的低波方波信号。
我从gpiointerrupt示例开始,并进行了以下更改。 目的是使用TI-RTOS为每个端口中断设置1个回调,然后使用索引值切换到相应的pin操作。 我在MSP_EXP430F5529LP.c中为gpioPinConfigs添加了GPIO引脚设置,在 MSP_EXP430F5529LP.h中为额外引脚添加了GPIO引脚名称
/*
========= MSP_EXP430F5529LP.c =========
*此文件负责为
* MSP_EXP430F5529LP主板设置特定于主板的项目。
*/
gPIO_PinConfig gpioPinConfig[]={
/*输入引脚*/
具有下降边缘中断的/* MSP_EXP430F5529LP_RTC P2_0输入*/
GPIOMSP430_P2_0 | GPIO _CFG_IN_PU | GPIO _CFG_IN_INT_ST_Falling,
/* MSP_EXP430F5529LP_S1 */
GPIOMSP430_P2_1 | GPIO _CFG_IN_PU | GPIO _CFG_IN_INT_INT_Rising,
/* MSP_EXP430F5529LP_S2 */
GPIOMSP430_P1_1 | GPIO _CFG_IN_PU | GPIO _CFG_IN_INT_INT_Rising,
/*输出引脚*/
/* MSP_EXP430F5529LP_LED1 */
GPIOMSP430_P1_0 | GPIO _CFG_OUT _STD | GPIO _CFG_OUT _STR_HIGH | GPIO _CFG_OUT低,
/* MSP_EXP430F5529LP_LED2 */
GPIOMSP430_P4_7 | GPIO _CFG_OUT _STD | GPIO _CFG_OUT _STR_HIGH | GPIO _CFG_OUT低,
};
。
。
。
/**===========================================================================================
*@文件 MSP_EXP430F5529LP.h
*
*@简介 MSP_EXP430F5529LP特定于板的API
*
* MSP_EXP430F5529LP头文件应包含在应用程序中
,如下所示:
*@code
*#include <MSP_EXP430F5529LP.h>
*@endcode
*
*===================================================================================
*//*
!
*@def MSP_EXP430F5529LP_GPIOName
*@MSP_EXP430F5529LP开发板上GPIO名称的简要枚举
*以PinConfigs的顺序排列[]
*/
typedef MSP_EXP430F5529LP_GPIOName {
MSP_EXP430F5529LP_RTC =0,/*端口2 PMST_P430P551/
端口1
MSP_EXP430F5529LP_S2,/*端口1引脚1 */
MSP_EXP430F5529LP_LED1,
MSP_EXP430F5529LP_LED2,
MSP_EXP430F5529LP_GPIOCOUNT
} MSP_EXP430F5529LP_GPIOName;
/* main */*
要由GUI Composer读取的变量*/
int count1 = 0;
int count2 = 0;
/*要由GUI读取的变量*/
// int rComposer count = 0;
/*==tc=
gpioPortFxn2 =========
端口2的* Callback函数
*如果索引位于gpioPinConfigs[]中,则应该得到0或1*/
void gpioPortFxn2 (无符号int索引)
{
/*清除GPIO中断并切换LED */
GPIO切换(Board_LED1);
如果(count2++== 100){
count2 = 0;
}
system_printf ("Port2 Int %d,%d\n",count2,index);
SYSTEM_FLUSE();
}/*
==== gpioPortFxn1 =========
*用于BOARD_BUTTON0上GPIO中断的回调函数。
***如果索引在gpioPinConfig[]中的位置,则我们应该得到2
*/
void gpioPortFxn1 (无符号int索引)
{
/*清除GPIO中断并切换LED */
GPIO切换(Board_LED0);
如果(count1++== 100){
Count1 = 0;
}
system_printf ("Port1 Int %d,%d\n",count1,index);
SYSTEM_FLUSE();
}/*
*/
/*
=== 主====
*/
int main (void)
{
/*呼叫板初始化函数*/
Board_initGeneral ();
Board_initGPIO ();
Board_initUART();
/*打开用户LED */
GPIO写入(Board_LED0,Board_LED_ON);
system_printf ("启动GPIO中断示例\n系统提供程序已设置"
"到SYSMIN。 停止目标以查看任何SYSMIN内容"
" ROV。\n");
/*只有在调用flush或exit */时,SYSMIN才会打印到控制台
system_flush();
//
/*安装回调*/
GPIO_setCallback(MSP_EXP430F5529LP_RTC,gpioPortFxn2);
GPIO_setCallback (Board_BUTTON0,gpioPortFxn1);
GPIO _setCallback (Board_Button1,gpioPortFxn2);
/*启用中断*/
GPIO_enableInt (MSP_EXP430F5529LP_RTC);
gPIO_enableInt (BOD_BUTTON0);
gPIO_enableInt (Board_Button1);
/*启动BIOS */
BIOS_START();
返回(0);
}
使用此代码,原始按钮操作会触发中断,并且我从2个回调函数获得到控制台的输出。
但是,附加GPIO中断不响应。 我还注意到P2_0显示0v,因此我想知道在针脚设置中是否遗漏了一些内容?
启动GPIO中断示例 系统提供程序设置为SYSMIN。 停止目标以查看ROV中的任何SYSMIN内容。 端口2内置1,2 端口2内置2,2 端口1内置1,1 端口1内置2,1 端口1内置3,1 端口1内置4,1
我意识到我在这里错过了一些东西。 我欢迎任何建议。