工具/软件:Code Composer Studio
我将使用适用于 MSP432P401R 的 TI Launchpad。 此程序仅在我调试时才起作用:当我单击"运行"时、它将卡在某个位置、当我单击"暂停"时、它将显示为在 for 循环中、我单击"恢复"、程序继续正常运行、并打印出内容。 如果我在 for 循环后面的 print 语句中放置一个断点、则在我暂停然后重新启动之前、它永远不会到达该断点。
#include "main.h"
/**
* main.c
*/
const Timer_a_UpModeConfig upConfig =
{
Timer_A_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源
Timer_A_CLOCKSOURCE_DELAG_64、 // SMCLK/1 = 3MHz
5000、 // 5000个周期
Timer_A_TAIE_INTERRUPT_DISABLE、 //禁用计时器中断
Timer_A_CCIE_CCR0_INTERRUPT_ENABLE,//启用 CCR0中断
Timer_A_do 清除 //清除值
};
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源
26、 // BRDIV = 78
0、 // UCxBRF = 2
0、//111、 // UCxBRS = 0
EUSCI_A_UART_NO_奇 偶校验、 //无奇偶校验
EUSCI_A_UART_LSB_FIRST、 // LSB 优先
EUSCI_A_UART_One_stop_bit、 //一个停止位
EUSCI_A_UART_MODE、 // UART 模式
EUSCI_A_UART_LOW_FREQUENCY _BAUDRATE_general//EUSCI_A_UART_overSAMPLING_BAUDRATE_generation //低频率模式
};
int putchar (int _x)
{
MAP_UART_transmitData (eUSCI_A0_BASE、(unsigned char)_x); //输入字符
返回((unsigned char)_x); //返回
}
int getchar (void)
{
返回0xFF; //返回接收到的字符
}
int fputc (int _c、寄存器文件*_fp)
{
返回 putchar (_c);
}
int fputs (const char *_ptr、寄存器文件*_fp)
{
unsigned int i、len;
len = strlen (_ptr);
for (i = 0;i < len;i++){
putchar (_ptr[i]);
}
返回 len;
}
void main (void)
{
volatile uint32_t ii;
MAP_WDT_A_HOLDTimer ();//停止看门狗计时器
MAP_GPIO_setAsOutputPin (GPIO_PORT_P9、GPIO_PIN7);
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P9、GPIO_PIN7);
/*将 Timer_A1配置为向上计数模式*/
MAP_Timer_A_configureUpMode (timer_A1_base、&upConfig);
/*启用中断并启动计时器*/
MAP_Interrupt_enableSlepOnIsrExit();
MAP_Interrupt_enableInterrupt (INT_TA1_0);
MAP_Timer_A_startCounter (timer_A1_base、timer_A_up_mode);
MAP_Interrupt_enableMaster();
//在 UART 模式下选择 P1.2和 P1.3
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、
GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);
CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY);//将 DCO 设置为3MHz
/*配置 UART 模块*/
MAP_UART_initModule (EUSCI_A0_BASE、uartConfig);
/*启用 UART 模块*/
MAP_UART_enableModule (EUSCI_A0_BASE);
printf ("测试\n\r");
while (1){
对于(ii = 0;ii < 48000;ii +)
{
}
printf ("Test\n\r");
}
}
void TA1_0_IRQHandler (void)
{
MAP_GPIO_toggleOutputOnPin (GPIO_PORT_P9、GPIO_PIN7);
MAP_Timer_A_clearCaptureCompareInterrupt (TIMER_A1_BASE、
Timer_A_CAPTURECOMPARE 寄存器_0);
}