示例#1

这段代码只会打开一个 P1.0 板载 LED,它是 MSP432 在寄存器级别的红色板载 LED。

#include "msp.h"

void main(void)
{
	WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; 

	P1->DIR |= BIT0;
	
	P1->OUT &= ~(BIT0);
	
	P1->SEL0 &= ~(BIT0);
	P1->SEL1 &= ~(BIT0);

	while (1) 
	{
		P1->OUT = BIT0;			 
		__delay_cycles(1000000); 
	}
}

示例2

该程序将演示如何使用 Timer_A 创建周期性任务。 Timer_A 以不同的速率切换 LED。

#include "msp.h"

uint8_t tic = 0; 

void main(void)
{
	WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; 

	
	P2->DIR |= BIT2;	
	P2->OUT &= ~(BIT2); 

	TIMER_A0->CTL = TIMER_A_CTL_TASSEL_2 | TIMER_A_CTL_MC_1; 
	TIMER_A0->CCR[0] = 60000 - 1;							 
	TIMER_A0->CCTL[0] = TIMER_A_CCTLN_CCIE;					 

	
	NVIC->ISER[0] = 1 << ((TA0_0_IRQn)&31);

	
	__enable_irq();

	while (1)
	{ 
	}
}

void TA0_0_IRQHandler(void)
{

	if (tic++ >= 50)
	{					 
		P2->OUT ^= BIT2; 
		tic = 0;		 
	}
	TIMER_A0->CCTL[0] &= ~(TIMER_A_CCTLN_CCIFG); 
}

示例#3

该程序将演示如何使用 Timer_A 创建周期性任务。 Timer_A 以不同的速率切换 LED。


#include "msp.h"

uint8_t tic = 0; 

void main(void)
{
	WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; 

	
	P2->DIR |= BIT2;	
	P2->OUT &= ~(BIT2); 

	
	TIMER_A0->CTL = TIMER_A_CTL_TASSEL_2 | TIMER_A_CTL_MC_1; 
	TIMER_A0->CCR[0] = 60000 - 1;							 
	TIMER_A0->CCTL[0] = TIMER_A_CCTLN_CCIE;					 

	NVIC->ISER[0] = 1 << ((TA0_0_IRQn)&31);

	__enable_irq();

	while (1)
	{ 
	}
}

void TA0_0_IRQHandler(void)
{
	
	if (tic++ >= 50)
	{					
		P2->OUT ^= BIT2; 
		tic = 0;		 
	}
	TIMER_A0->CCTL[0] &= ~(TIMER_A_CCTLN_CCIFG); 
}

模数转换(ADC)

ADXL335 加速度计的多通道 | 通过 ADC 使用两个或更多通道 | 读取单个通道并更改 LED 的状态

通用输入和输出 (GPIO)

脉宽调制 (PWM)

使用脉冲宽度调制 (PWM) 控制 LED 亮度 | 使用脉冲宽度调制 (PWM) 控制多个 LED 亮度 | SG90伺服电机控制演示 | 使用脉冲宽度调制 (PWM) 创建正弦波以交替输出强度

通用异步接收器和发送器 (UART)

通过UART0发送字符 | 使用外部串行接口 (UART2) 发送字符 | 通过中断接收数据并根据接收到的字符改变 LED 的状态

RTOS线程

Hwis线程 | Swis线程 | Hwi 线程与 Swi 线程交互 | 任务

https://embed.notionlytics.com/wt/ZXlKM2IzSnJjM0JoWTJWVWNtRmphMlZ5U1dRaU9pSlhiRWhvWlV4VVQxbHNjMlZYV2tKbU9URndaU0lzSW5CaFoyVkpaQ0k2SW1VMFlUUmhOVEl4T1RFd1lqUm1NMlJpWXpka1lXWmxOVEUwTlRBd04yUmxJbjA9