完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
1.新建工程
2.仿真现象 令j=0; 按键按下触发中断,转入中断服务程序,j+1; 灯亮一个,再按下按键,灯亮加一,以此类推 GPIO基本操作: 以GPIOC低八位为例: 第i位置0:GPIOC-》BRR=(1《《i) 第i位置1:GPIOC-》BSRR=(1《《i) GPIOx-》BRR:端口位清除寄存器 高16位保留 低16位:0:对对应的ODRy位不产生影响 1:清除对应的ODRy位 功能:将某些位置0 GPIOx-》BSRR:端口位设置/清除寄存器 此处只用到低16位:0:对对应的ODRy位不产生影响 1:将对应的ODRy位置1 高16位功能同GPIOx-》BRR 3.代码部分 (1)先上主函数源码 main.c #include “stm32f10x.h” u8 i,j=0; void delay_ms(uint32_t ms) { uint32_t i_cnt,j_cnt; for(i_cnt=0;i_cnt《3000;i_cnt++); for(j_cnt=0;j_cnt《ms;j_cnt++); } int main(){ //GPIOA2配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC,&GPIO_InitStructure); //中断配置 //打开AFIO复用时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //关联中断线 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2); //配置EXTI EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line=EXTI_Line2; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //配置NVIC NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); GPIOC-》BSRR=0xff; while(1) { for(i=0;i《j;i++) { GPIOC-》BRR=(1《《i); } } } void EXTI2_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line2)!=RESET) { j++; EXTI_ClearITPendingBit(EXTI_Line2); } } (2)文件引用 //stm32 必需头文件 #include “stm32f10x.h” (3)延时函数 void delay_ms(uint32_t ms) { uint32_t i_cnt,j_cnt; for(i_cnt=0;i_cnt《3000;i_cnt++); for(j_cnt=0;j_cnt《ms;j_cnt++); } (4)中断配置 配置中断线GPIOA2 //GPIOA2配置 /*打开GPIOA,GPIOC的时钟,GPIOA,GPIOC挂载在APB2上*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE); /*定义GPIO_InitStruture*/ GPIO_InitTypeDef GPIO_InitStructure; /*使用PA2*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; /*GPIO_Speed设为50MHz*/ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*工作模式设为上拉输入*/ GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; /*初始化GPIO*/ GPIO_Init(GPIOA,&GPIO_InitStructure); //连接PC0~7八个LED /*使用GPIOC0-7*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; /*工作模式设为推挽输出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*初始化GPIO*/ GPIO_Init(GPIOC,&GPIO_InitStructure); 配置EXTI //中断配置 //打开AFIO复用时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //关联中断线 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource2); //配置EXTI EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line=EXTI_Line2; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); 配置NVIC //配置NVIC NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); 配置中断服务程序 void EXTI2_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line2)!=RESET) { j++; EXTI_ClearITPendingBit(EXTI_Line2); } } (5)protues仿真图 4.源码+仿真下载 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1154 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1185 浏览 1 评论
603 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
451 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1099 浏览 2 评论
1652浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
317浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
316浏览 3评论
309浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
284浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 03:20 , Processed in 1.518553 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191