使用标准库,编写stm32f103c8t6通过USART2串口输出数值的程序
时间: 2023-12-18 11:51:43 浏览: 90
以下是使用标准库编写的stm32f103c8t6通过USART2串口输出数值的程序:
```c
#include "stm32f10x.h"
#include <stdio.h>
void USART2_Init(void);
void USART2_SendChar(char ch);
void USART2_SendString(char* str);
int main(void) {
// 初始化USART2
USART2_Init();
// 输出数值
int num = 123;
char str[10];
sprintf(str, "%d", num);
USART2_SendString(str);
while (1) {
// 程序循环
}
}
void USART2_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// 使能GPIOA以及USART2时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);
// 配置PA2为USART2_TX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置USART2
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_Tx;
USART_Init(USART2, &USART_InitStructure);
// 使能USART2
USART_Cmd(USART2, ENABLE);
}
void USART2_SendChar(char ch) {
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
USART_SendData(USART2, (uint16_t)ch);
}
void USART2_SendString(char* str) {
while (*str) {
USART2_SendChar(*str++);
}
}
```
上述代码中,我们通过 `USART2_Init` 函数初始化了USART2串口,然后通过 `USART2_SendString` 函数发送字符串到串口。在主函数中,我们先定义了一个整型变量 `num`,然后通过 `sprintf` 函数将其转换为字符串,并通过 `USART2_SendString` 函数发送到串口。
阅读全文