泰凌微 Telink TLSR825X Printf gpio 模拟 串口 打印信息 log

如题:

使用telink可以使用printf功能,之前我不了解,我一度以为这是uart 实现的printf

在配置的时候,居然配置 uart 对应的gpio接口,后面这个问题坑了一段时间。

其实printf是telink 通过芯片gpio模拟的,可以使用除了uart接口以外的 接口进行模拟

当然如果你想要uart的io应该也是可以的,只是你回少一个uart的使用,不能同时打开

我现在分享配置使用的方法

app_config.h

添加 #define UART_PRINT_DEBUG_ENABLE                                1

然后

application /print/putchar.c 

添加如下代码

注意使用的gpio口 根据自己硬件适当修改

#define PRINT_BAUD_RATE                                 115200
#define DEBUG_INFO_TX_PIN                               GPIO_PB6
#define PULL_WAKEUP_SRC_PB6                             PM_PIN_PULLUP_10K
#define PB6_OUTPUT_ENABLE                               1
#define PB6_DATA_OUT                                    1 //must

#ifndef        BIT_INTERVAL
#define        BIT_INTERVAL        (16000000/PRINT_BAUD_RATE)
#endif

_attribute_ram_code_
int uart_putc(char byte) //GPIO simulate uart print func

函数之前添加

然后再main_loop 添加打印信息 我们最熟悉的代码 printf("hello world!");

然后删除之前的文件,重新编译生成,应该就可以打印了

这里特别注意强调信息:任何编译修改头文件配置的都需要删除之前文件重新生成。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在STM32中,我们可以通过使用GPIO模拟UART的方式来打印log。下面是一个简单的例子: 1. 配置GPIO 首先,我们需要选择一个GPIO口,作为模拟UART的TX口。在本例中,我们将使用PA8口。 ```c GPIO_InitTypeDef GPIO_InitStruct = {0}; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOA_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); /*Configure GPIO pin : PA8 */ GPIO_InitStruct.Pin = GPIO_PIN_8; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); ``` 2. 定义打印函数 接下来,我们需要定义一个打印函数,该函数将接收一个字符串并将其转换为模拟UART信号发送到TX口。 ```c void uartLog(char* str) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); // start bit for(int i = 0; i < strlen(str); ++i) { for(int j = 0; j < 8; ++j) { if(str[i] & (1 << j)) { // send bit 1 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); } else { // send bit 0 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); } HAL_Delay(1); // wait for 1ms } } HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_SET); // stop bit } ``` 3. 使用打印函数 现在,我们可以在代码中使用uartLog函数来打印log了。 ```c uartLog("Hello, world!"); ``` 这就是通过GPIO模拟UART来打印log的简单例子。需要注意的是,该方法的速度较慢,不适合在高速数据传输的场景下使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值