stm32f103c8t6开发板配套程序
stm32f103c8t6开发板配套程序
以下是一个适用于STM32F103C8T6开发板的配套程序示例(基于标准外设库),包含LED闪烁和串口通信功能:
1. 硬件连接
- LED:连接在PC13引脚(开发板通常内置)
- 串口:USART1 (PA9-TX, PA10-RX)
- 按键:PA0(根据开发板电路调整)
2. 完整代码(main.c)
#include "stm32f10x.h"
// 粗略延时函数
void Delay_ms(uint32_t n) {
for(; n != 0; n--)
for(uint32_t i = 0; i < 7200; i++);
}
// USART1初始化(115200波特率)
void USART1_Init(void) {
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// 使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);
// 配置TX(PA9)为推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// 配置RX(PA10)为浮空输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_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);
}
// 串口发送字符串
void USART_SendString(USART_TypeDef* USARTx, char *str) {
while (*str) {
USART_SendData(USARTx, *str++);
while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);
}
}
int main(void) {
// 初始化系统时钟(默认使用内部8MHz RC振荡器)
SystemInit();
// 初始化LED(PC13)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOC, &GPIO_InitStruct);
// 初始化按键(PA0)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入
GPIO_Init(GPIOA, &GPIO_InitStruct);
// 初始化串口
USART1_Init();
USART_SendString(USART1, "STM32F103C8T6启动成功!\r\n");
while(1) {
// LED闪烁
GPIO_WriteBit(GPIOC, GPIO_Pin_13, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)));
// 检测按键
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) { // 按下
USART_SendString(USART1, "按键触发!\r\n");
while (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET); // 等待释放
}
Delay_ms(500); // 延时500ms
}
}
3. 程序功能
- LED闪烁:PC13引脚LED每500ms翻转一次
- 串口通信:
- 波特率115200
- 启动时发送欢迎信息
- 按键按下时发送触发信息
- 按键检测:PA0引脚按键(低电平触发)
4. 使用说明
- 开发环境:Keil MDK-ARM / STM32CubeIDE
- 库依赖:STM32标准外设库(需在工程中包含)
- 调试工具:
- 串口助手(查看输出信息)
- LED状态观察
- 按键触发测试
5. 常见问题解决
- LED不亮:检查开发板LED是否连接PC13(部分板子可能使用PB12)
- 串口无输出:
- 检查TX/RX接线是否正确
- 确认串口助手波特率设置为115200
- 检查外部晶振是否启用(默认使用内部时钟)
- 按键无响应:根据开发板原理图调整按键引脚(部分板子使用PA0或PB12)
提示:如需使用外部8MHz晶振,需在
SystemInit()后配置时钟树,参考库函数SetSysClockTo72()完成配置。
6. 扩展建议
- 添加ADC采集(PA1通道)
- 启用定时器实现精准延时
- 增加PWM输出(例如PA8)
- 移植FreeRTOS实现多任务
实际开发时请根据具体开发板的原理图调整引脚定义。
stm32f103c8t6怎么连接噪声传感器
(ADC引脚)。 在STM32F103C8T6上配置ADC功能。首先,你需要确定使用哪个ADC通道连接噪声传感器。然后,使用STM32的开发工具
2023-12-21 16:10:05
ch32f103c8t6与stm32f103c8t6的区别
ch32f103c8t6与stm32f103c8t6的区别 STM32F103C8T6是一款32位微处理器,属于
2023-08-22 16:05:41
STM32F103C8T6开发板最小系统原理图
电子发烧友网站提供《STM32F103C8T6开发板最小系统原理图》资料免费下载
资料下载
jf_86950612
2025-03-24 09:09:37
STM32F103C8T6核心板的资料合集免费下载
本文档的主要内容详细介绍的是STM32F103C8T6核心板的资料合集免费下载包括了:STM32F103C8T6核心
资料下载
浮世漂流
2020-06-04 08:00:00
如何将LCD与STM32F103C8T6 STM32开发板连接并编程
在本教程中,我们将学习如何将16×2 LCD显示器与STM32F103C8T6 STM32开发板连接,并使用Arduino IDE对其进行编程。
2022-11-09 16:18:36
STM32F103C8T6开发板的相关资料推荐
下面列出此课程中涉及的硬件主板及参考的购买链接。可以自行选择店铺购买,只要参数一致即可。1. STM32F103C8T6 开发板https://item.taobao.com/item.htm
stm32f103c8t6开发板具体流程
STM32单片机.然后,给电脑安装st-link驱动,驱动链接.提取码:5dpc.下一步,st-link和stm32f103c8t6按如下接线:接好线后按下图所示配置Arduino IDE:完成后,将st-link
怎样用ArduinoIDE对STM32F103C8T6进行编程
STM32F103C8T6板 - 也称为Blue Pill - 是ARM Cortex的开发板M3微控制器。它看起来与Arduino Nano非
2019-07-30 08:42:07
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机