stm32f103c8t6最小系统板加一个外设
时间: 2024-12-27 21:28:29 浏览: 12
### 如何在STM32F103C8T6最小系统板上添加外设
#### 添加LED指示灯
为了展示如何向STM32F103C8T6最小系统板添加简单的外设,可以考虑增加一个LED指示灯。这通常涉及将LED的一端连接到微控制器的一个GPIO引脚,并将其另一端接地。
对于STM32F103C8T6而言,可以选择任意未被占用的GPIO引脚作为输出来控制LED的状态。例如,如果选择PB5作为LED驱动引脚,则相应的硬件连接如下:
- LED正极(较长腿)通过限流电阻接到STM32 PB5引脚;
- LED负极(较短腿)直接连至GND;
```c
// 初始化 GPIOB 的第 5 号引脚为推挽输出模式
void led_init(void){
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 开启 GPIOB 时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // 设置为 PB5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度设置为 50 MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
// 控制 LED 状态函数
void set_led(int state){
if(state==1)
GPIO_SetBits(GPIOB, GPIO_Pin_5); // 打开 LED
else
GPIO_ResetBits(GPIOB, GPIO_Pin_5); // 关闭 LED
}
```
上述代码片段展示了初始化过程以及如何切换LED状态[^1]。
#### 连接按键开关
另一个常见的外设是按键开关。假设希望实现按下按钮使LED亮起的功能,那么还需要配置额外的输入引脚用于检测按键动作。这里选取PC13作为外部中断源之一来进行说明。
物理连线方面:
- 按键一端应接入Vcc供电轨,
- 另一端则经过下拉电阻后与PC13相连,
软件部分需开启相应管脚上的上升沿触发事件处理机制并编写回调服务程序以响应实际按压操作。
```c
// 配置 PC13 为 EXTI 中断线
void exti_config(){
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
EXTI_InitTypeDef EXTI_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
EXTI_InitStruct.EXTI_Line = EXTI_Line13;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x00;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}
// 外部中断服务例程
void EXTI15_10_IRQHandler(void){
if(EXTI_GetITStatus(EXTI_Line13)!=RESET){
toggle_led(); // 切换 LED 状态
EXTI_ClearITPendingBit(EXTI_Line13); // 清除标志位
}
}
```
此段落描述了如何利用STM32CubeMX工具生成的基础框架基础上进一步定制化开发环境下的具体编码细节。
阅读全文