OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2078|回复: 3

用了SysTick_Config 不知道在哪卡死了

[复制链接]

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2017-7-3
在线时间
30 小时
发表于 2017-8-7 10:23:54 | 显示全部楼层 |阅读模式
10金钱
//主函数大概是#include "stm32f10x.h"
#include "usart.h"
#include <stdio.h>

__IO u8 Flag_KEY;


int main(void)
{
        Usart_Init(4800);
        SysTick_Config(SystemCoreClock/1000);
        while (1)
        {       
                printf("\r\nI am in while loop\r\n");
                        if (Flag_KEY)
                        {
                                printf("\r\nI am in the if loop\r\n");
                                Flag_KEY = 0;
                        }

}

//中断处理函数
extern __IO u8 Flag_KEY;
void SysTick_Handler(void)
{
        static __IO u8 Flag_KEY_temp;

        printf("\r\nI am in IRQ\r\n");
        if(++Flag_KEY_temp >= 40)
        {
                Flag_KEY_temp = 0;
                Flag_KEY = 1;
                printf("\r\nFlag key = 1\r\n");
        }

}




下载到板子里值打开串口 只接收到I am in IRQ, Flag key =1, 求帮我看下在哪里出了问题

最佳答案

查看完整内容[请看2#楼]

弄好了 原因好像是SysTick_Handler与Printf相性不大好 要用printf的话 把if(++Flag_KEY_temp >= 40) 这里改大点 例如改成if(++Flag_KEY_temp >= 400) 或者直接不在SysTick_Handler里用Printf函数
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2017-7-3
在线时间
30 小时
 楼主| 发表于 2017-8-7 10:23:55 | 显示全部楼层
弄好了 原因好像是SysTick_Handler与Printf相性不大好
要用printf的话 把if(++Flag_KEY_temp >= 40) 这里改大点 例如改成if(++Flag_KEY_temp >= 400)
或者直接不在SysTick_Handler里用Printf函数
回复

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2017-7-3
在线时间
30 小时
 楼主| 发表于 2017-8-7 10:25:14 | 显示全部楼层
...少打了了个大括号
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165462
金钱
165462
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-8-8 02:16:36 | 显示全部楼层
仿真
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-20 11:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表