主题中讨论的其他器件:CC3100SDK、 CC3100BOOST、 MSPWARE、 CC3100
工具/软件:Code Composer Studio
你(们)好 从 cc3100sdk 导入项目时、我无法理解使用 CCS 提供的代码的最佳实践。 我想设置一个中断来处理按钮按压操作(在 P1.4上)、并看到 board.c 中有我认为应该添加或修改的现有代码(例如 Port1_ISR 和 registerButtonIrqHandler)。 很遗憾、我找不到任何有关如何正确添加到此代码的文档。 Board.c/h 具有 s1的现有代码(ccp3100boost 涵盖的 msp430f5529lp 上的开关、因此我无法使用该现有代码、但希望复制或修改它)。
我已经尝试在 board.c 中添加一个函数、我可以将 button_press_handler 指向该函数、并且可以在此函数中设置一个标志、我可以在主函数中引用该标志。 这在编译时创建的 obj 文件中创建了重新定义符号的错误。 例如、错误符号"btnP1_4Flag"首先在"./main.obj"中定义;在"./board/board.obj 中重新定义 是否应在 user.h 和 main.c 文件中写入此代码、同时保持 board.c/h 不变? 感谢您指引我正确的方向来解决这个问题。
我使用的是 CCS7、编译器 MSP430_4.3.1、cc3100sdk_1.2.0以及 msp430f5529lp 和 cc3100BOOST。
我已从下面的 board.c 中选择了我要引用的代码...
button_press_handler buttonIrqHandler = 0; static void enable_button_s1_IRQ () { PADIR &=~0x1080; P2OUT |= BIT1; P2DIR &=~(BIT1); P2REN |= BIT1; P2IES &=~(BIT1); P2IFG = 0; P2IE |= BIT1; } void enableButtonIrq (void) { enable_button_s1_IRQ (); } int registerButtonIrqHandler (button_press_handler InterruptHdl、void* pValue) { buttonIrqHandler = InterruptHdl; /*启用开关中断*/ enableButtonIrq(); 返回0; } #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__) #pragma vector=Port1_vector __interrupt #elif defined (__GNU__) __attribute__(interrupt (Port1_vector))) #endif void Port1_ISR (void ){void} 在调用中断矢量之前、//上下文保存中断标志。 * /*读取中断矢量发生器将自动清除 IFG 标志*/ 开关(__evo_in_range (P1IV、P1IV_P1IFG7)) { /*矢量 P1IV_NONE:无中断挂起*/ 案例 P1IV_NONE: 中断; /*向量 P1IV_P1IFG0:P1IV P1IFG.0 * 案例 P1IV_P1IFG0: 中断; ... 案例 P1IV_P1IFG7: 中断; /*默认情况*/ 默认值: 中断; } }