通过串口输出打印信息
- 添加log.c
#include "log.h" #if LOG_ENABLE #include "n32l43x.h" #include "n32l43x_gpio.h" #include "n32l43x_usart.h" #include "n32l43x_rcc.h" #define LOG_USARTx USART1 #define LOG_PERIPH RCC_APB2_PERIPH_USART1 #define LOG_GPIO GPIOA #define LOG_PERIPH_GPIO RCC_APB2_PERIPH_GPIOA #define LOG_TX_PIN GPIO_PIN_9 #define LOG_RX_PIN GPIO_PIN_10 void log_init(void) { GPIO_InitType GPIO_InitStructure; USART_InitType USART_InitStructure; GPIO_InitStruct(&GPIO_InitStructure); RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | LOG_PERIPH_GPIO, ENABLE); RCC_EnableAPB2PeriphClk(LOG_PERIPH, ENABLE); GPIO_InitStructure.Pin = LOG_TX_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Slew_Rate = GPIO_Slew_Rate_High; GPIO_InitStructure.GPIO_Alternate = GPIO_AF4_USART1; GPIO_InitPeripheral(LOG_GPIO, &GPIO_InitStructure); GPIO_InitStructure.Pin = LOG_RX_PIN; GPIO_InitStructure.GPIO_Pull = GPIO_Pull_Up; GPIO_InitStructure.GPIO_Alternate = GPIO_AF4_USART1; GPIO_InitPeripheral(LOG_GPIO, &GPIO_InitStructure); USART_InitStructure.BaudRate = 115200; USART_InitStructure.WordLength = USART_WL_8B; USART_InitStructure.StopBits = USART_STPB_1; USART_InitStructure.Parity = USART_PE_NO; USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE; USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX; // init uart USART_Init(LOG_USARTx, &USART_InitStructure); // enable uart USART_Enable(LOG_USARTx, ENABLE); } int fputc(int ch, FILE* f) { USART_SendData(LOG_USARTx, (uint8_t)ch); while (USART_GetFlagStatus(LOG_USARTx, USART_FLAG_TXDE) == RESET) ; return (ch); } #ifdef USE_FULL_ASSERT __WEAK void assert_failed(const uint8_t* expr, const uint8_t* file, uint32_t line) { log_error("assertion failed: `%s` at %s:%d", expr, file, line); while (1) { } } #endif // USE_FULL_ASSERT #endif // LOG_ENABLE #endif // LOG_ENABLE
#endif // LOG_ENABLE
- 添加log.h
#ifndef __LOG_H__ #define __LOG_H__ #ifndef LOG_ENABLE #define LOG_ENABLE 1 #endif #if LOG_ENABLE #include
#define LOG_NONE 0 #define LOG_ERROR 10 #define LOG_WARNING 20 #define LOG_INFO 30 #define LOG_DEBUG 40 #ifndef LOG_LEVEL #define LOG_LEVEL LOG_DEBUG #endif #if LOG_LEVEL >= LOG_INFO #define log_info(...) printf(__VA_ARGS__) #else #define log_info(...) #endif #if LOG_LEVEL >= LOG_ERROR #define log_error(...) printf(__VA_ARGS__) #else #define log_error(...) #endif #if LOG_LEVEL >= LOG_WARNING #define log_warning(...) printf(__VA_ARGS__) #else #define log_warning(...) #endif #if LOG_LEVEL >= LOG_DEBUG #define log_debug(...) printf(__VA_ARGS__) #else #define log_debug(...) #endif void log_init(void); #else /* !LOG_ENABLE */ #define log_info(...) #define log_warning(...) #define log_error(...) #define log_debug(...) #define log_init() #endif #define log_func() log_debug("call %s [%d]\\r\\n", __FUNCTION__,__LINE__) #endif /* __LOG_H__ */ #endif /* __LOG_H__ */ #endif /* __LOG_H__ */
- man调用
int main(void) { log_init(); log_func(); //assert_param(0); while (1) { } } }
}
异常处理
-
若无法正常打印信息,则查看keil5配置,需要 打开use microLIB
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
N32
+关注
关注
0文章
18浏览量
7202 -
国民威廉希尔官方网站
+关注
关注
2文章
308浏览量
20385 -
Printf
+关注
关注
0文章
83浏览量
13650
发布评论请先 登录
相关推荐
N32G43XRL-STB开发板硬件使用指南
N32G43XRL-STB 开发板用于国民威廉希尔官方网站
股份有限公司32位N32G43XRL系列MCU的开发。本文档详细描述了N32G43XRL-STB
发表于 11-01 07:27
N32L43XRL-STB开发板硬件使用指南
N32L43XRL-STB开发板硬件使用指南开发板用于国民威廉希尔官方网站
股份有限公司32位N32L43XRL系列MCU的开发。本文档详细描述了N32L43XR
发表于 11-01 06:48
【国民威廉希尔官方网站 N32项目移植】N32G345XVL-STB项目移植 ——开箱及开发环境搭建
感谢Elecfans和国民威廉希尔官方网站
,能够参与国民威廉希尔官方网站
N32项目移
发表于 12-03 17:11
【国民威廉希尔官方网站 N32项目移植】N32L43XRL-STB项目移植之基于IIC接口的OLED
IIC接口的OLED是平时实验中常用的显示设备,和开发板只需要四根线连接,VCC、GND、SDA、SCL。而且所使用的IIC经常采用软件模拟的方式实现。本次移植就是利用N32L436的两个IO口模拟
发表于 12-23 08:35
【国民威廉希尔官方网站 N32项目移植】5. ADC应用以及跳坑总结
SSD1306软件包【国民威廉希尔官方网站
N32项目移植】4. 硬件定时器实现2ms定时前言本文讲解如何使用N
发表于 02-02 21:45
【国民威廉希尔官方网站 N32项目移植】 串口支持printf有坑
的问题,说说串口问题。详细描述本次使用了USB调试口自带的串口1(PA9,PA10),程序编写参照官方例程,没什么问题,毕竟 N32的库还是和经典的ST标准库非常相似的。正常的
发表于 02-18 22:09
【国民威廉希尔官方网站 N32项目移植】FOC项目移植之环境搭建
FOC项目移植之环境搭建很高兴能够参加国民威廉希尔官方网站
N32开源移植挑战赛,本人这次将在RT-Threa
发表于 02-24 13:53
【国民威廉希尔官方网站 N32项目移植】easypower 结论
经过简单的移植和调试,比较顺利的完成。本设计比较简单,国民威廉希尔官方网站
的软件库和例程也比较完善。所以还是容易的。只是在原来设计的板子上做移植和验证。
发表于 02-28 23:49
评论