基于STM32F103外部IO中断的按键控制编程

该博客详细介绍了如何使用STM32F103微控制器进行按键电路设计,特别是PB3和PA15引脚的配置、中断设置和服务程序。通过按键控制,实现DHT11传感器显示温度和湿度的主程序。其他内容包括系统时钟、嘀哒时钟、LED和DHT11引脚的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、按键电路

在系统中SW1按键与STM32F103的PB3引脚相连接,SW2按键与STM32F103的PA15引脚相连接。
在这里插入图片描述

2、PB3、PA15引脚配置程序

void KEY_GPIO_Config(void)
{
   
   	
    GPIO_InitTypeDef  GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);	
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;			 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 
    GPIO_Init(GPIOB, &GPIO_InitStructure);   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;			 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 
    GPIO_Init(GPIOA, &GPIO_InitStructure);   	
}

3、PB3、PA15外部IO中断配置程序

void Exti_Config(void)
{
   
   	
  EXTI_InitTypeDef EXTI_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource15);
  GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);
  EXTI_InitStructure.EXTI_Line = EXTI_Line3|EXTI_Line15; 
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
  EXTI_InitStructure
stm32f103c8芯片制作的J-Link和ST-Link调试器,功能和成品模块几乎一样,同时外观也十分小巧,便于携带和使用。 搜集了相关制作资料,画PCB板,焊接制作,烧固件,分别做了J-Link和ST-Link,都可以用,效果。成本虽然低不了多少,但对于一个电子爱好者,谁不想自己亲手做个下载器和调试器。 烧录固件: 焊接好实物后,是不能用keil软件烧程序的,因为固件只是一个hex文件,必须要用到其他工具烧录,这里有两种 1.使用J-Link烧录工具下载,这个工具在电脑J-Link软件SEGGE里有,可以使用JTAG和SWD方式下载,具体步骤可以百度搜下。 2.采用串口下载,将C8单片机BOOT0置高,配置成串口烧录程序,工具为flymcu,具体步骤可以百度搜下。 关于烧录固件后,插上USB没反应(情况比较多),或者与开发工具通信不正常下载不了程序(笔者做ST-Link时遇到过): 前者笔者遇到过的情况为,USB与单片机间的限流电阻太大或者上拉电阻过大过小,使得USB与单片机通信不正常;还有一个就是晶振焊接时外壳与焊盘短接,晶振短路了,没反应;另外就是没有焊接晶振起振电容,晶振无法起振,单片机没工作。当然还有可能就是单片机烧坏了(这种情况比较少)。 对于后者通信不正常,一般是由于烧录进去的固件版本低了,这可以升级固件,当然这个时候就不是用下载工具像烧固件那样升级了,而是利用电脑USB口给升级,制作的J-Link keil会自动检测和升级,而制作的ST-Link则需要其他工具,如STM32 ST-LINK Utility,网上都有例程。 J-Link下载器 ST-Link调试器 电路城语:免费分享设计资料,不提供技术支持,请大家使用前验证资料的正确性! PCB工程、固件库、工具资料至附件下载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值