HC32L130J8TA的ETR怎么使用
时间: 2024-05-21 18:18:20 浏览: 13
HC32L130J8TA是一款由华大基础(Hangzhou Silan Microelectronics Co., Ltd.)生产的单片机,其中包含了一个用于调试的ETR(External Trace)功能。
ETR是一种外部跟踪端口,可用于单步调试程序并捕获代码执行期间的状态信息。
使用ETR进行单步调试需要以下步骤:
1. 配置ETR端口。将ETR端口配置为输出模式并使能。
2. 连接ETR端口。将ETR端口连接到调试器或仿真器的ETR输入端口。
3. 在需要进行调试的代码处设置断点。
4. 连接调试器或仿真器。将调试器或仿真器连接到目标设备的调试接口。
5. 启动调试器或仿真器,并开始单步执行程序。
6. 在每个断点处停止程序执行,并使用调试器或仿真器捕获状态信息。
7. 分析状态信息,以确定程序是否按预期执行。
具体使用方法可以参考华大基础提供的相关文档或咨询他们的技术支持团队。
相关问题
HC32L130J8TA的ETR的计数器功能,计数时钟为外部ETR如何设置
HC32L130J8TA的ETR(External Trigger Control)模块可以用于捕获外部信号,并且可以使用外部信号作为计数器的计数时钟。在使用外部ETR作为计数时钟时,需要将计数器的时钟源设置为ETR时钟。
以下是设置HC32L130J8TA的ETR计数器功能时,使用外部ETR作为计数时钟的步骤:
1. 使能ETR模块:设置ETRCON的ETREN位为1,使能ETR模块。
2. 配置ETR模块工作模式:设置ETRCON的ETRSEL位为1,选择ETR作为计数器的计数时钟。
3. 配置ETR输入信号:设置ETRCON的ETRP位为0或1,选择ETR输入信号的极性。
4. 配置ETR计数器模式:设置ETRCON的ETRMD位,选择计数器模式。
5. 配置ETR计数器:设置ETRGATE、ETRPR、ETRCMP和ETRBUF等寄存器,配置计数器的工作参数。
6. 配置外部ETR输入信号:将外部ETR信号连接到ETR引脚。
完成以上步骤后,HC32L130J8TA的ETR模块就可以使用外部ETR作为计数时钟,实现计数器功能。
hc32l130j8ta串口例程
以下是 HC32L130J8TA 的串口发送和接收例程:
发送代码:
```c
#include "hc32l130.h"
#define USART_INSTANCE USART1
int main(void)
{
// 使能外设时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralM4Clock, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE);
// 配置 GPIO
Gpio_InitIOExt(GPIO_PORT_4, GPIO_PIN_3, GpioDirOut, GpioDrvLevel3);
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_2, GpioAf2); // UART1_RX
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_3, GpioAf2); // UART1_TX
// 配置串口
stc_uart_config_t stcConfig;
stcConfig.enRunMode = UartMode1; // 模式1
stcConfig.u32Baudrate = 9600; // 波特率
stcConfig.enDataLength = UartDataLength8; // 数据位8位
stcConfig.enParity = UartParityNone; // 无奇偶校验
stcConfig.enStopBit = UartStopBit1; // 停止位1位
stcConfig.enSamplingMode = UartSingleSampling; // 单次采样
if (Ok != Uart_Init(USART_INSTANCE, &stcConfig))
{
while (1)
{
;
}
}
while (1)
{
Uart_SendData(USART_INSTANCE, 'H');
Uart_SendData(USART_INSTANCE, 'e');
Uart_SendData(USART_INSTANCE, 'l');
Uart_SendData(USART_INSTANCE, 'l');
Uart_SendData(USART_INSTANCE, 'o');
Uart_SendData(USART_INSTANCE, '\r');
Uart_SendData(USART_INSTANCE, '\n');
delay_ms(1000);
}
}
```
接收代码:
```c
#include "hc32l130.h"
#define USART_INSTANCE USART1
int main(void)
{
// 使能外设时钟
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralM4Clock, TRUE);
Sysctrl_SetPeripheralGate(SysctrlPeripheralUart1, TRUE);
// 配置 GPIO
Gpio_InitIOExt(GPIO_PORT_4, GPIO_PIN_3, GpioDirOut, GpioDrvLevel3);
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_2, GpioAf2); // UART1_RX
Gpio_SetAfMode(GPIO_PORT_4, GPIO_PIN_3, GpioAf2); // UART1_TX
// 配置串口
stc_uart_config_t stcConfig;
stcConfig.enRunMode = UartMode1; // 模式1
stcConfig.u32Baudrate = 9600; // 波特率
stcConfig.enDataLength = UartDataLength8; // 数据位8位
stcConfig.enParity = UartParityNone; // 无奇偶校验
stcConfig.enStopBit = UartStopBit1; // 停止位1位
stcConfig.enSamplingMode = UartSingleSampling; // 单次采样
if (Ok != Uart_Init(USART_INSTANCE, &stcConfig))
{
while (1)
{
;
}
}
while (1)
{
uint8_t u8Data;
if (Ok == Uart_ReceiveData(USART_INSTANCE, &u8Data, 1, 0xFFFF))
{
if (u8Data == 'H')
{
Uart_SendData(USART_INSTANCE, 'O');
Uart_SendData(USART_INSTANCE, 'K');
Uart_SendData(USART_INSTANCE, '\r');
Uart_SendData(USART_INSTANCE, '\n');
}
}
}
}
```
注意,以上代码需要配合 HC32L130J8TA 的库文件来编译运行。