用户工具

站点工具


icore3_arm_hal_7

差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
icore3_arm_hal_7 [2020/04/11 16:38]
fmj
icore3_arm_hal_7 [2022/03/18 15:02] (当前版本)
sean
行 2: 行 2:
 |技术支持电话|**0379-69926675-801**||| |技术支持电话|**0379-69926675-801**|||
 |技术支持邮件|Gingko@vip.163.com||| |技术支持邮件|Gingko@vip.163.com|||
-|技术论坛|http://​www.eeschool.org||| 
 ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^ ^  版本 ​ ^  日期 ​ ^  作者 ​ ^  修改内容 ​ ^
 |  V1.0  |  2020-04-11 ​ |  gingko ​ |  初次建立 ​ |  |  V1.0  |  2020-04-11 ​ |  gingko ​ |  初次建立 ​ | 
行 10: 行 9:
  
 1. 新建工程:在主界面选择File-->​New Project ​  ​或者直接点击ACCEE TO MCU SELECTOR  ​ 1. 新建工程:在主界面选择File-->​New Project ​  ​或者直接点击ACCEE TO MCU SELECTOR  ​
-{{ :​icore3:​icore3_cube_7_1.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_1.png?​direct |}}
 2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置 2. 出现芯片型号选择,搜索自己芯片的型号,双击型号,或者点击Start Project进入配置
-在搜索栏的下面,提供的各 ​ 种查找方式,可以选择芯片内核型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F407IGTx。 +在搜索栏的下面,提供的各种查找方式,可以选择芯片内核型号等等,可以帮助你查找芯片。本实验选取的芯片型号为:STM32F407IGTx。 
-{{ :​icore3:​icore3_cube_7_2.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_2.png?​direct | }} 
 3. 配置RCC,使用外部时钟源 3. 配置RCC,使用外部时钟源
-{{ :​icore3:​icore3_cube_7_3.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_3.png?​direct | }}
 4. 配置调试引脚 4. 配置调试引脚
-{{ :​icore3:​icore3_cube_7_4.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_4.png?​direct | }}
 5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output 5. 将LED对应的3个引脚(PI5,PI6,PI7)设置为GPIO_Output
-{{ :​icore3:​icore3_cube_7_5.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_5.png?​direct | }}
 6. 将ARM_KEY对应的引脚(PH15)设置为GPIO_EXTI15 6. 将ARM_KEY对应的引脚(PH15)设置为GPIO_EXTI15
-{{ :​icore3:​icore3_cube_7_6.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_6.png?​direct | }}
 7. 引脚模式配置 7. 引脚模式配置
   * 三色LED引脚配置   * 三色LED引脚配置
-{{ :​icore3:​icore3_cube_7_7.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_7.png?​direct | }}
   * ARM_KEY引脚配置,GPIO_EXIT有6种模式,这里选择下降沿触发外部中断。   * ARM_KEY引脚配置,GPIO_EXIT有6种模式,这里选择下降沿触发外部中断。
-{{ :​icore3:​icore3_cube_7_8.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_8.png?​direct | }}
 8. 配置IWDG 8. 配置IWDG
-{{ :​icore3:​icore3_cube_7_9.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_9.png?​direct | }}
 9. 时钟源设置,选择外部高速时钟源,配置为最大主频 9. 时钟源设置,选择外部高速时钟源,配置为最大主频
-{{ :​icore3:​icore3_cube_7_10.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_10.png?​direct | }}
 10.  工程文件的设置,​ 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 ​ IDE我们使用的是 MDK5 10.  工程文件的设置,​ 这里就是工程的各种配置 我们只用到有限几个,其他的默认即可 ​ IDE我们使用的是 MDK5
-{{ :​icore3:​icore3_cube_7_11.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_11.png?​direct | }}
 11. 点击Code Generator,进行进一步配置 11. 点击Code Generator,进行进一步配置
-{{ :​icore3:​icore3_cube_7_12.png?​direct&​900 ​| }}+{{ :​icore3:​icore3_cube_7_12.png?​direct | }}
   * **Copy all used libraries into the project folder**   * **Copy all used libraries into the project folder**
   * 将HAL库的所有.C和.H都复制到所建工程中   * 将HAL库的所有.C和.H都复制到所建工程中
行 50: 行 50:
  
 12. 然后点击GENERATE CODE  创建工程。创建成功,打开工程。 12. 然后点击GENERATE CODE  创建工程。创建成功,打开工程。
-{{ :​icore3:​icore3_cube_7_13.png?​direct&​900 ​| }} +{{ :​icore3:​icore3_cube_7_13.png?​direct | }} 
 ===== 实验七:IWDG看门狗实验——复位ARM ===== ===== 实验七:IWDG看门狗实验——复位ARM =====
  
行 78: 行 78:
   * (2) 时钟由独立RC振荡器提供(可在待机和停止模式下运行)。   * (2) 时钟由独立RC振荡器提供(可在待机和停止模式下运行)。
   * (3) 当递减计数器值达到0x000时产生复位(如果看门狗已激活)。   * (3) 当递减计数器值达到0x000时产生复位(如果看门狗已激活)。
-{{ :​icore3:​icore3_arm_hal_7_1.png?​direct&​500 ​|}}  +{{ :​icore3:​icore3_arm_hal_7_1.png?​direct |}}  
-{{ :​icore3:​icore3_arm_hal_7_2.png?​direct&​500 ​|}} +{{ :​icore3:​icore3_arm_hal_7_2.png?​direct |}} 
   * STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在规定时间喂狗,自动复位ARM。本实验通过按键按下,停止喂狗,制造程序运行错误,从而产生复位。   * STM32内部包含独立看门狗,通过看门狗可以监控程序运行,程序运行错误时,未在规定时间喂狗,自动复位ARM。本实验通过按键按下,停止喂狗,制造程序运行错误,从而产生复位。
 ==== 四、 实验程序 ==== ==== 四、 实验程序 ====
行 86: 行 86:
 <code c> <code c>
 int main(void)  ​ int main(void)  ​
-    +  
-HAL_Init(); ​                //​重置所有外围设备。 +  HAL_Init(); ​  
-    SystemClock_Config(); ​  //​配置系统时钟 +  SystemClock_Config(); ​  
-    MX_GPIO_Init(); ​        //​初始化所有已配置的外围设备 +  MX_GPIO_Init(); ​  
-  ​ LED_RED_ON        //​初始化LED状态 ​     ​ +  ​MX_IWDG_Init()  
-   while (1)   +  while (1)   
-   {      +    
-        ​+     ​while(ARM_KEY_STATE == KEY_DOWN); //​按键按下进入循环,不再喂狗,2秒后灯熄灭 ​ 
 +        ​HAL_IWDG_Refresh(&​hiwdg); ​  //​喂狗 
 +        LED_RED_ON; ​  
 +        LED_GREEN_OFF; ​  
 +        LED_BLUE_OFF; ​  
 +        HAL_Delay(500);​  
 +        LED_RED_OFF; ​  
 +        LED_GREEN_ON; ​  
 +        LED_BLUE_OFF; ​  
 +        HAL_Delay(500); ​  
 +        LED_RED_OFF; ​  
 +        LED_GREEN_OFF; ​  
 +        LED_BLUE_ON; ​  
 +        HAL_Delay(500); ​  
 +    
 }  ​ }  ​
 </​code>​ </​code>​
-=== 2. 中断回调函数 ===+=== 2.HAL库独立看门狗函数库 === 
 +  * 看门狗初始化函数: ​
 <code c> <code c>
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);+HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
 </​code>​ </​code>​
-功能:中断函数具体要响应的动作。+  * 喂狗函数
 <code c> <code c>
-void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin  +HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
-{   +
-    static int led_work_status = 0;   +
-    HAL_Delay(10); ​  +
-    if(ARM_KEY_STATE == KEY_DOWN){ ​  +
-        led_work_status += 1;   +
-        if(led_work_status > 2)led_work_status = 0;   +
-    }   +
-    switch(led_work_status){ ​  +
-        case 0:   +
-            LED_RED_ON; ​  +
-            LED_GREEN_OFF; ​  +
-            LED_BLUE_OFF; ​  +
-            break; ​  +
-        case 1:   +
-            LED_RED_OFF; ​  +
-            LED_GREEN_ON; ​  +
-            LED_BLUE_OFF; ​  +
-            break; ​  +
-        case 2:   +
-            LED_RED_OFF; ​  +
-            LED_GREEN_OFF; ​  +
-            LED_BLUE_ON; ​  +
-            break; ​  +
-            default: ​  +
-            break; ​  +
-    }   +
-    __HAL_GPIO_EXTI_CLEAR_FLAG(GPIO_PIN_9); ​   +
-+
 </​code>​ </​code>​
 +  * 功能:使用该函数定时喂狗
    
 ==== 五、 实验步骤 ==== ==== 五、 实验步骤 ====
行 142: 行 130:
 ==== 六、 实验现象 ==== ==== 六、 实验现象 ====
  
-按键按下一次三色LED颜色变换(红色、绿色、蓝色轮流变换)一次+  * iCore3双核心板三色LED交替闪烁,当按键按下超过2s看门狗复位ARM
  
icore3_arm_hal_7.1586594280.txt.gz · 最后更改: 2020/04/11 16:38 由 fmj