OpenEdv-开源电子网

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

结构体指针遇到了一个小问题,求帮助

[复制链接]

29

主题

91

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2015-4-24
在线时间
37 小时
发表于 2016-4-1 11:01:10 | 显示全部楼层 |阅读模式
1金钱
话不多说。直接上代码:
/***定义一个结构体***/

typedef struct{
        uint32_t val1;
        uint32_t val2;
}*p_test,test;
test test_task;    //定义一个结构体变量

//***关于结构体的操作***///
static void Task_Init(p_test p,uint32_t a)  //a是随意设置的一个变量,在主函数调用的时候我给了200
{
        p->val1 = Systicks;    //val1指向Systicks,,,,,,(此处Systicks在定时器里每1个ms中断+1.)
        p->val2 = a;
}
static void Task_Check(p_test p)
{
        USART1_Send_Char((u8)p->val1%255);  //将两个值发送到PC上进行观察
        USART1_Send_Char((u8)p->val2%255);
}


主函数如下:
int main(void)
{
        TIME_Init(7199,9);
        USART1_Init(38400);
        Task_Init(&test_task,200);  
        while(1)
        {       
                Task_Check(&test_task);
        }

}

目前遇到的问题是,PC机收到的数据,p->val1 = Systicks;这一行始终是0,(正常应该是不断+1才对)
                                                    p->val2 = a,这个的数据是正确的,PC收到200.。
经过测试没有弄懂这其中的缘由,,Systicks这个的量确实是在变化的,,求大神。。




一起学,一起进步,未来总有你我的一片天空……
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
755
金钱
755
注册时间
2015-9-16
在线时间
94 小时
发表于 2016-4-1 11:37:23 | 显示全部楼层
本帖最后由 SeaOverflow 于 2016-4-1 11:38 编辑

Task_Init没有进入循环,只在Systicks = 0时赋值了一次。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 17:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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