这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
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。 |