用户工具

站点工具


icore4t_23

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
icore4t_23 [2020/03/06 14:25]
zgf 创建
icore4t_23 [2022/04/01 10:46] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-03-06 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-03-06 ​ |  gingko ​ |  初次建立 ​ | 
 +\\
 +\\
  
  
 ===== STM32CubeMX教程二十三——EXTI外部中断输入实验 ===== ===== STM32CubeMX教程二十三——EXTI外部中断输入实验 =====
 +\\
  
 1.在主界面选择File-->​New Project ​  ​或者直接点击ACCEE TO MCU SELECTOR  ​ 1.在主界面选择File-->​New Project ​  ​或者直接点击ACCEE TO MCU SELECTOR  ​
行 63: 行 65:
 ==== 二、 实验设备及平台 ==== ==== 二、 实验设备及平台 ====
  
-  - iCore4T 双核心板。 +  - iCore4T 双核心板。[[https://​item.taobao.com/​item.htm?​spm=a1z10.1-c.w137644-251734891.3.5923532fDrMDOe&​id=610595120319|点击购买]] 
-  - JLINK(或相同功能)仿真器。+  - JLINK(或相同功能)仿真器。[[https://​item.taobao.com/​item.htm?​id=554869837940|点击购买]]
   - Micro USB线缆。   - Micro USB线缆。
   - Keil MDK 开发平台。   - Keil MDK 开发平台。
行 99: 行 101:
     * 线20:连接到电压比较器1。     * 线20:连接到电压比较器1。
     * 线21:连接到电压比较器2。     * 线21:连接到电压比较器2。
-  * 其余的55个,请大家参考《STM32H7xx参考手册》第747页,Table141.EXTIEventinput +  * 其余的55个,请大家参考《STM32H7xx参考手册》第747页,Table141.EXTIEventinput mapping,从上面可以看出,中断线0-15对应外部IO口的输入中断,一共是16个外部中断线。STM32H7供IO口使用的中断线只有16个,但是STM32H7的IO口却远远不止16个,那么STM32H7是怎么把16个中断线和IO口一一对应起来的呢?于是STM32就这样设计,GPIO的引脚GPIOx.0~GPIOx.15(x=A,​B,​C,​D,​E,​F,​G,​H,​I,​J,​K)分别对应中断线0~15。这样每个中断线对应了最多11个IO口,以线0为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0,​GPIOH.0,​GPIOI.0,​GPIOJ.0,​GPIOK.0。而中断线每次只能连接到1个IO口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO上了。
-  * mapping,从上面可以看出,中断线0-15对应外部IO口的输入中断,一共是16个外部中断线。STM32H7供IO口使用的中断线只有16个,但是STM32H7的IO口却远远不止16个,那么STM32H7是怎么把16个中断线和IO口一一对应起来的呢?于是STM32就这样设计,GPIO的引脚GPIOx.0~GPIOx.15(x=A,​B,​C,​D,​E,​F,​G,​H,​I,​J,​K)分别对应中断线0~15。这样每个中断线对应了最多11个IO口,以线0为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0,​GPIOH.0,​GPIOI.0,​GPIOJ.0,​GPIOK.0。而中断线每次只能连接到1个IO口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO上了。+
   * GPIO和中断线映射关系是在寄存器SYSCFG_EXTICR1~SYSCFG_EXTICR4中配置的。   * GPIO和中断线映射关系是在寄存器SYSCFG_EXTICR1~SYSCFG_EXTICR4中配置的。
   * 所以我们要配置外部中断,还需要打开SYSCFG时钟。   * 所以我们要配置外部中断,还需要打开SYSCFG时钟。
   * 在本实验中,按键的一端与STM32的GPIO(PH7)相连,另外一端接地,且PH7外接一个1K电流大小的上拉电阻。初始化时把PH7设置成输入模式,当按键弹起时,PH7由于上拉电阻的作用呈高电平;当按键按下时,PH7直接被按键短接到GND,呈低电平。因此PH7的电平变化产生下降沿,从而进入中断函数,可得到按键状态。原理图如下:   * 在本实验中,按键的一端与STM32的GPIO(PH7)相连,另外一端接地,且PH7外接一个1K电流大小的上拉电阻。初始化时把PH7设置成输入模式,当按键弹起时,PH7由于上拉电阻的作用呈高电平;当按键按下时,PH7直接被按键短接到GND,呈低电平。因此PH7的电平变化产生下降沿,从而进入中断函数,可得到按键状态。原理图如下:
-{{ :icore4t:icore4t_arm_hal_23_1.png?direct |}}+{{ :icore4t:icore4t_arm_hal_23_2.png?direct |}}
 ==== 四、 实验程序 ==== ==== 四、 实验程序 ====
  
 === 1.主函数 === === 1.主函数 ===
 <code c> <code c>
 +int main(void)
 +{
 +    static int counter = 0;
 +    HAL_Init();
 +    SystemClock_Config();​
 +    i2c.initialize();​
 +    axp152.initialize();​
 +    axp152.set_dcdc1(3500);//​[ARM & FPGA BK1/2/6 &OTHER]
 +    axp152.set_dcdc2(1200);//​[FPGA INT & PLL D]
 +    axp152.set_aldo1(2500);//​[FPGA PLL A]
 +    axp152.set_dcdc4(3300);//​[POWER_OUTPUT]
 +  ​
 +    axp152.set_dcdc3(3300);//​[FPGA BK4][Adjustable]
 +    axp152.set_aldo2(3300);//​[FPGA BK3][Adjustable]
 +    axp152.set_dldo1(3300);//​[FPGA BK7][Adjustable]
 +    axp152.set_dldo2(3300);//​[FPGA BK5][Adjustable]
 +
 +    MX_GPIO_Init();​
 +    LED_ON;
 +    while (1)
 +    {
 +          /* 每按下一次按键触发一次中断,以LED状态表述是否触发 */
 +        if(exti_flag == 1){
 +            HAL_Delay(20);//​消抖
 +            if(HAL_GPIO_ReadPin(ARM_KEY_GPIO_Port,​ ARM_KEY_Pin) == GPIO_P ​  ​IN_RESET){
 +                exti_flag = 0;
 +                if(counter ++ % 2){
 +                    LED_ON;
 +                }else{
 +                    LED_OFF;
 +                }
 +            }
 +        }
 +    }
 + }
  
 </​code> ​ </​code> ​
 === 2.中断回调函数 === === 2.中断回调函数 ===
 <code c> <code c>
 +void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 +{
 +    if(GPIO_Pin == ARM_KEY_Pin){
 +        exti_flag = 1;
 +    }
 +}
  
 </​code> ​ </​code> ​
icore4t_23.1583475956.txt.gz · 最后更改: 2020/03/06 14:25 由 zgf