STM32F103C8T6+IIC OLED 0.96简单使用带串口调试输入出工程模板
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103C8T6+IIC OLED 0.96简单使用带串口调试输入出工程模板相关的知识,希望对你有一定的参考价值。
STM32F103C8T6+IIC OLED0.96简单使用带串口调试输入出工程模板
-
这是一个基于别人开源代码基础上建立的的一个模板工程,该工程模板界面简洁,文件架构工整,如果开发类似的基础工程项目可以,直接拿来作为模板套用,完整工程会在末尾分享出来。
-
串口输出(工程模板默认没有主动打印调试信息出来,
main.c第31行
)
-
串口启用了将接收到的数据原样发送出来
-
工程概览
接线说明
- IIC 0.96" OLED屏幕
PA1----SCL
PA2----SDA
- 串口1
工程已经重映射好了,可以直接使用
printf
函数来串口调试打印输出信息
PA9----TX
PA10----RX
主程序代码
#include "main.h"
#include "bsp_delay.h"
#include "bsp_usart.h"
#include "bsp_sys.h"
#include "bsp_led.h"
#include "bsp_exti.h"
#include "bsp_timer.h"
#include "bsp_adc.h"
#include "bsp_key.h"
#include "oled.h"
int main()
u8 oledStr[16]=0;
u8 count=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
BspUsartInit(115200);
DelayInit();
OLED_Init();
while(1)
count ++;
sprintf((char*)oledStr,"Test : %3d ",(u8)count);//将数据存进oledStr数组
OLED_ShowString(10,28,oledStr,16,1);//oled显示数组
OLED_Refresh();
DelayMs(100);
// printf("%s \\n",oledStr);//串口打印
bsp_usart.c
#include "bsp_usart.h"
#include "stdio.h"
//接收到数据后,将数据返回发送
void DebugUsartMain()
u8 res;
res = USART_ReceiveData(USART1);
USART_SendData(USART1,res);
void USART1_IRQHandler(void)
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
DebugUsartMain();
EXTI_ClearITPendingBit(USART_IT_RXNE);
//重定义fputc函数
int fputc(int ch, FILE *f)
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
void BspUsartInit(u32 bound)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|
RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA时钟
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
//USART1_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//USART1_RX GPIOA.10初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//Usart1 NVIC 配置
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化NVIC寄存器
//USART 初始化设置
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
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); //初始化串口1
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启串口接受中断
USART_Cmd(USART1, ENABLE); //使能串口1
程序源码
链接:https://pan.baidu.com/s/1hn174EJCxUJ6zuZCpo-M0Q
提取码:mgmd
阅读世界,共赴山海
423全民读书节,邀你共读
以上是关于STM32F103C8T6+IIC OLED 0.96简单使用带串口调试输入出工程模板的主要内容,如果未能解决你的问题,请参考以下文章
STM32F103C8T6在Arduino框架下驱动ssd1306 0.96“ IIC OLED显示