7454|29

78

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

新手求助 [复制链接]

请教各位大侠一个问题。本人用普通IO口做一路PWM信号,由于频率在比较高,且要可调脉宽(256档),所以想把PWM的输出做在基准定时的中断服务程序里。程序如下:
@far @interrupt void TIM6_UPD_OVF_TRG_IRQHandler(void)
{
unsigned char count_songsi;
unsigned char count_128us;
count_songsi++;
count_128us++;
if(count_128us>=8)
{
  flag_1ms=1;
  count_128us=0;
}
if(count_songsi>pwm_songsi)
  PD_ODR=PD_ODR||0x01;
else
  PD_ODR=PD_ODR&&0xfe;
  return;
}

上面的1ms标志flag_1ms和PWM_songsi 在主程序里已经有过定义,PWM_songsi就是不同的脉宽值,但是在中断服务程序编译的时候始终说这两个变量未定义。本人是新手,请各位大侠指教我该怎么弄?
此帖出自stm32/stm8论坛

最新回复

                                  还不知道要何年何月。。。。。哎。。。  详情 回复 发表于 2010-10-12 16:59
点赞 关注
 

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 斑竹呢?怎么都不愿意指教一下呢?
此帖出自stm32/stm8论坛
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1)不是不愿意指教,我不是时时在线,这是公共论坛,任何人都可以帮忙,不一定非要版主回答。

2)请说清楚你使用的芯片型号。

3)如果使用ST的MCU,你可以使用定时器的PWM输出模式,不必使用中断方式。
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 芯片型号是:STM8S903K3 ,因为整个系统有3路PWM  频率各不相同,TIM1做了一路带死区的互补信号,TIM5单独做了一路PWM信号。所以就用普通的I/O口来做一路输出了。现在最大的问题是,为什么我在主程序里设置的全局变量在中断服务程序里不能识别呢?包括1ms的基准时间标志,好象也识别不了。主程序和中断程序似乎联系不起来,够郁闷的,不知道是什么原因。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
主程序指的是什么?是main函数吗?首先你要了解全局变量和局部变量的定义。在main函数里定义的变量只能在main中有限,当然不能应用到中断函数中。
如果你是定义的全局变量,但主函数和中断函数并不在一个文件中,那么你需要在中断函数所在的文件中,使用extern将变量声明一下,目的是告诉编译器这些变量在别的文件中已经声明和定义过,否则,编译器就会提示错误。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 在主程序里定义全局变量的时候增加了 extern 声明;同时在中断服务程序里增加了 #include"main.c" 程序编译通过,非常感谢!
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
请按照5楼提示:“你需要在中断函数所在的文件中,使用extern将变量声明一下”。

另外,#include"main.c"  也是不对的。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 好的,在主函数里定义了函数类型,并在中断程序所在的文件里进行了申明,现在两个文件都可以编译通过了,谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 
晕,还是有些问题,今天早上过来按“built"或者“debug"都出现以下错误提示。
clnk -m Debug\hanji.map -lF:\程序\Lib  -o Debug\hanji.sm8 Debug\hanji.lkf
#error clnk Debug\hanji.lkf:47 can't open file crtsi0.sm8
#error clnk Debug\hanji.lkf:59 can't open file libis0.sm8
#error clnk Debug\hanji.lkf:60 can't open file libm0.sm8
#error clnk Debug\hanji.lkf:67 Debug\stm8_interrupt_vector.o: symbol _count_50us multiply defined (Debug\main.o)
#error clnk Debug\hanji.lkf:67 Debug\stm8_interrupt_vector.o: symbol _flag_1ms multiply defined (Debug\main.o)
#error clnk Debug\hanji.lkf:67 Debug\stm8_interrupt_vector.o: symbol _count_songsi multiply defined (Debug\main.o)
#error clnk Debug\hanji.lkf:67 Debug\stm8_interrupt_vector.o: symbol _pwm_songsi multiply defined (Debug\main.o)
The command: "clnk -m Debug\hanji.map -lF:\程序\Lib  -o Debug\hanji.sm8 Debug\hanji.lkf " has failed, the returned value is: 1
exit code=1.

hanji.elf - 9 error(s), 0 warning(s)
其中有几条好象是说count_50us;flag_50us;count_songsi;pwm_songsi这几个变量重复定义。这个又是为什么呢?
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

10
 
定义的问题是自己不小心写错了, 现在这个问题已经OK。
#error clnk Debug\hanji.lkf:47 can't open file crtsi0.sm8
#error clnk Debug\hanji.lkf:59 can't open file libis0.sm8
#error clnk Debug\hanji.lkf:60 can't open file libm0.sm8
这个问题请大侠们指点,非常感谢!
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 似乎很多人碰到问题的第一反应,就是直接呼唤版主主
此帖出自stm32/stm8论坛
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

12
 


没办法啊,第一次写程序,又没人带,压力好大。
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 5楼和7楼说的对。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
                                 求助版主其实挺好的
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

15
 



恩,需要多学习学习!
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 似乎很人在问版主问题的时候都没给芯片型号的,都得让版主问一次
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

17
 
                                 擅于问问题,就是一个不断进步的过程
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

18
 


谢谢各位前辈鼓励!可是现在问题还没解决,急切ing.
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

19
 
                                 不是已经解决了吗??还有啥问题,说得详细点,大家再探讨一下
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

20
 


已经解决,谢谢!
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表