STM32F103VC串口做输入打印到终端
来源:互联网 发布:三星s8预装软件 编辑:程序博客网 时间:2024/04/29 15:55
STM32F103VC下将串口作为输入打印到终端
定义两个文件,一个是uart.c 一个是uart.h
uart.h的代码:
/*uart.h code*/#ifndef UART_H#define UART_Hvoid uart1_init(void);#endif
对外调用的初始化函数进行声明。
- uat.c的代码:
要包含的头文件
#include "stm32f10x.h"#include "stdio.h"#include "uarth"
初始化串口要用到的GPIO口,这里是PA9,PA10
int uart_gpio_init(){ GPIO_InitTypeDef UART_GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); GPIO_StructInit(&UART_GPIO_InitStructure); UART_GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; UART_GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; UART_GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &UART_GPIO_InitStructure); UART_GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; UART_GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &UART_GPIO_InitStructure); return 0;}
配置串口的波特率,校验位等等属性
int uart_config(){ USART_InitTypeDef USART_InitStructure; USART_StructInit(&USART_InitStructure); USART_InitStructure.USART_BaudRate =115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE); return 0;}
配置串口所用到中断向量表
void nvic_uart_config(void){ NVIC_InitTypeDef NVIC_InitStructure; /* Enable the USART1 Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);}
写一个外部调用的串口初始化函数
void uart1_init(void){ uart_gpio_init(); uart_config(); nvic_uart_config(); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);}
将printf输出进行编写为该串口
int fputc(int ch, FILE * f){ USART_SendData(USART1, (uint8_t)ch); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET ); return ch;}
在stm32f10x_it.c 文件中定义串口中断采用中断接收,接收到之后采用轮询的方式发送
void USART1_IRQHandler(void){ uint8_t rx_data; if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET) { USART_ClearITPendingBit(USART1, USART_IT_RXNE); rx_data=USART_ReceiveData(USART1); USART_SendData(USART1, rx_data); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); }}
最后在主函数main()中调用uart.h里面对外提供的调用函数,但前提是在RCC时钟时序都配置好情况下才可以执行。
0 0
- STM32F103VC串口做输入打印到终端
- Contiki移植到STM32F103VC
- 串口终端 打印连续的 fimc_outdev_check_param
- 什么是串口终端.主要用来做什么的?
- μCOS_II移植到STM32F103VC过程
- qemu linux串口重定向到终端
- 实现一个命令行linux终端应用程序,把输入的指定文件,映射到内存中,并打印出文件内容
- linux 终端打印内容输出到文件
- RHEL 6.8 printk打印到虚拟终端
- 嵌入式linux屏蔽终端串口打印的信息
- 解决tiny4412串口终端不能输入的问题
- 接收到无线数据串口打印流程
- linux重定向串口打印到telnet
- linux重定向串口打印到telnet
- 串口终端
- 将LINUX的控制台定向到串口终端
- 将LINUX的控制台定向到串口终端
- 将LINUX的控制台定向到串口终端
- hash模块 hashlib 和hmac
- DAMQ(动态分配共享多队列)实现过程总结
- Linux查看网络端口对应的程序
- Android Bitmap图像色彩质量
- TensorFlow 从入门到精通(五):使用 TensorFlow 实现 RNN
- STM32F103VC串口做输入打印到终端
- Java EE的十三个技术规范
- 偏差,方差,训练误差,测试误差的区别
- 英语学习思维导图
- 枚举(enum)的简单用法
- SSH-登录功能流程
- HDU 5698 瞬间移动
- Java实现将目录下指定类型文件全部删除_FileFilter文件过滤
- 347. Top K Frequent Elements