c语言定义全局变量stm32,STM32单片机设计extern全局变量的定义解析

本文详细介绍了在STM32单片机设计中,如何正确使用extern关键字处理全局变量,特别是在中断服务函数中遇到的问题。通过实例解析了全局变量定义、声明的区别,以及在不同文件中如何共享全局变量,特别是自定义结构体类型的全局变量。
摘要由CSDN通过智能技术生成

描述

今天在写SysTcik_Handler()这个中断函数时,总是报错,明明在开头定义的全局变量extern u16 ntime,(ntime--写在stm32f10x_it.c的systick中断函数中)但是编译时总是报错,百度之后才有了解决方法,

362def6e1af30c0ca1933ce90a5d1092.png

之前也注意到过extern变量,但是没有仔细思考过它的使用方法,今天碰到了,一定要把它弄明白,把这个关键字的一般作用弄清楚(仅仅是一般作用,C的博大精深不敢妄谈);

当你建立一个头文件库时,经常会遇到一个问题,就是在A文件中定义一个temple变量,想把它的值传递给B文件使用,但是A文件操作中函数又不可以带返回参数,比如说中断服务函数,那该怎么办?如果你把temple定义在A中,然后让A.h和B.h包含在includes.h中,然后把includes.h放在A.c和B.c中单个编译是没有问题的,但是链接的时候会出现问题,

“Symbol temple multiply defined(by A.o and B.o)”

意思是这个变量被多次定义了!!!

解决的方法是:

在A中定义temple变量后,在B中用extern 声明一下就可以了,例如:

1.在A中定义temple并且赋值:u16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值