本文最后更新于170 天前,其中的信息可能已经过时,如有错误请发送邮件到
2871065713@qq.com
在项目文件夹/usr目录下新建uart文件夹,新建duart.h,duart.c文件,在项目中新建uart并将.c和.h加入到uart下。
在stm32f10x_conf.h中将include “stm32f10x_usart.h”取消注释

下面分别是duart.h和duart.c。
//duart.c
#include "duart.h"
void DUartInit(void)
{
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
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(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
void Uart_Putchar(char ch)
{
USART1->DR = ch;
}
//duart.h
#ifndef DIO_DUART_H
#define DIO_DUART_H
#include <stm32f10x.h>
void DUartInit(void);
void Uart_Putchar(char ch);
#endif
在main.c中需要引入duart.h头文件并初始化
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"
#include "led.h"
#include "qsystick.h"
#include "duart.h"
//#define S_GPIOB_BASE 0X40010C00
////#define S_CRL S_GPIO_BASE + 0x00
////#define S_ODR S_GPIO_BASE + 0x0C
//#define S_GPIOB ((GPIOA_PORTTypeDef*)S_GPIOB_BASE)
//typedef struct{
// uint32_t CRL;
// uint32_t IDR;
// uint32_t ODR;
// uint32_t BSRR;
// uint32_t BRR;
// uint32_t CKR;
//}GPIOA_PORTTypeDef;
//
//void delay_ms(uint32_t ms){
// uint32_t count = 10000;
//
// while(ms --){
// count = 10000;
// while(count --);
// }
//}
//int main(void)
//{
// uint32_t temreg = 0;
// /* GPIOB Periph clock enable */
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// temreg = S_GPIOB->CRL;
// temreg &= 0xFF0FFFFF;
// temreg += 0x00200000;
// S_GPIOB->CRL = temreg;
//
// temreg = S_GPIOB->ODR;
// temreg &= 0x0EF;
// S_GPIOB->ODR = temreg;
// while(1);
//}
int main(void)
{
SysticInit();
LedInit();
DUartInit();
while(1){
Uart_Putchar('.');
Led2_blink();
DelayMs(500);
}
}
