注意事项
1、使能中断的单位是端口,因此无法做到只使能端口的某个引脚的中断而不使能该端口的其他引脚。所以如果一个端口有多个引脚是中断源,那么中断子程中应当增加语句,判断是哪一个中断源触发了中断。
2、中断子程不能传入参数、不能有返回值,应当是简短、高效的(在中断中做浮点运算、printf等操作是不明智的)。
3、条件表达式(<表达式1>?<表达式2>:<表达式3>)比if-else语句在优化方面更好。
4、除非要利用溢出归零特性,否则循环变量一般使用无符号整型数(unsigned int)。
5、为了使程序更加高效,建议将所有函数的参数都控制在4个及以下。
6、CCS不支持引用传递!若想在函数中直接操作外部的变量,请使用指针传递。
SDK库-GPIO相关
//宏名
GPIO_PORT_P1(MSP432一般使用P1~P6)
GPIO_PIN0(MSP432一般使用PIN0~PIN7)
//最常用
GPIO_setAsInputPin(GPIO_PORT_P1,GPIO_PIN0);
GPIO_setAsOutputPin(参数同上);
GPIO_getInputPinValue(参数同上); //返回值为对应的电平(0x1或0x0)
GPIO_setOutputHighOnPin(参数同上);
GPIO_setOutputLowOnPin(参数同上);
GPIO_toggleOutputOnPin(参数同上); //输出取反
//常用中断相关
GPIO_disableInterrupt(GPIO_PORT_P1,GPIO_PIN0); //禁止
GPIO_enableInterrupt(GPIO_PORT_P1,GPIO_PIN0); //使能
GPIO_interruptEdgeSelect(GPIO_PORT_P1,GPIO_PIN0,边沿); //边沿可选:GPIO_LOW_TO_HIGH_TRANSITION或GPIO_HIGH_TO_LOW_TRANSITION
GPIO_getEnabledInterruptStatus(GPIO_PORT_P1); //返回值为选定端口的所有引脚中断信息
GPIO_getInterruptStatus(GPIO_PORT_P1,GPIO_PIN0); //返回值选定端口、引脚的中断信息(返回的是BITx,而非单纯的0x0或0x1)
GPIO_clearInterruptFlag(GPIO_PORT_P1,GPIO_PIN0);
GPIO_registerInterrupt(GPIO_PORT_P1,PORT1_IRQHandler); //中断注册,PORT1_IRQHandler是函数名可以随便写,但要记得在main函数之前进行声明(定义可前可后)
GPIO_unregisterInterrupt(GPIO_PORT_P1,PORT1_IRQHandler); //解注册
//不常用
GPIO_setAsInputPinWithPullDownResistor(GPIO_PORT_P1,GPIO_PIN0);
GPIO_setAsInputPinWithPullUpResistor(参数同上);
GPIO_setDriveStrengthHigh(参数同上); //强驱动
GPIO_setDriveStrengthLow(参数同上); //弱驱动(无特殊需求,一般不用设置)
//几乎不用,需要使用时自行查看参数、返回值等详细信息
GPIO_setAsPeripheralModuleFunctionInputPin();
GPIO_setAsPeripheralModuleFunctionOutputPin();