搜索
bottom↓
回复: 3

将dspic的时钟配置单独放到一个头文件,编译警告

[复制链接]

出0入0汤圆

发表于 2014-10-30 10:33:17 | 显示全部楼层 |阅读模式
本帖最后由 wirelessgo 于 2014-10-30 10:40 编辑

刚接触dspic 我现在遇到一个奇怪的问题。我想把时钟的配置放到一个头文件中conf_osc.h

conf_osc.h 的内容:

#ifndef CONF_OSC_H
#define CONF_OSC_H

#include <p33FJ32MC204.h>

// Configure Oscillator to operate the device at 40Mhz
// Fosc= Fin*M/(N1*N2), Fcy=Fosc/2
// Fosc= 7.37*43/(2*2)=79.23MHz
PLLFBD = 37;//M=30;
CLKDIVbits.PLLPOST = 0;     // N1=2
CLKDIVbits.PLLPRE = 0;      // N2=2
OSCTUNbits.TUN = 23; //pll to 8M

//OSCTUN=0;                                        // Tune FRC oscillator, if FRC is used �����pmsm��û��

RCONbits.SWDTEN=0;  // Disable Watch Dog Timer

                                                                // Clock switch to incorporate PLL
__builtin_write_OSCCONH(0x01);  // Initiate Clock Switch to FRC with PLL (NOSC=0b001)
                                                               
__builtin_write_OSCCONL(0x01);                // Start clock switching

while(OSCCONbits.COSC != 0b001);  // Wait for Clock switch to occur

while(OSCCONbits.LOCK != 1){}; // Wait for PLL to lock

#endif


现在在 MPLAB X IDE 中的编辑窗口中提示:


编译时,有下面的提示信息:
In file included from ../../src/main.c:13:0:
../../src/inc/conf_osc.h:9:1: warning: data definition has no type or storage class
../../src/inc/conf_osc.h:9:1: warning: type defaults to 'int' in declaration of 'PLLFBD'
nbproject/Makefile-default.mk:83: recipe for target 'build/default/debug/_ext/1445274692/main.o' failed


用 source inlight 搜索 PLLFBD 得到的结果显示这个宏在p33FJ32MC204.h中

---- PLLFBD Matches (5 in 2 files) ----
p33FJ32MC204.h (e:\kp\soft\soft_git\dspic\si\xc16_v1.22_support_peripheral_dspic33f\h):#define PLLFBD PLLFBD
p33FJ32MC204.h (e:\kp\soft\soft_git\dspic\si\xc16_v1.22_support_peripheral_dspic33f\h):extern volatile unsigned int  PLLFBD __attribute__((__sfr__));
p33FJ32MC204.h (e:\kp\soft\soft_git\dspic\si\xc16_v1.22_support_peripheral_dspic33f\h):/* PLLFBD */
p33FJ32MC204.inc (e:\kp\soft\soft_git\dspic\si\xc16_v1.22_support_peripheral_dspic33f\inc):        .extern PLLFBD
p33FJ32MC204.inc (e:\kp\soft\soft_git\dspic\si\xc16_v1.22_support_peripheral_dspic33f\inc):;----- PLLFBD Bits -----------------------------------------------------


我用的是c编写代码,应该用不到p33FJ32MC204.inc 吧?
我的理解是.inc文件是给汇编程序用的 .h是给C用的

出现这种现象,是什么原因呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-30 11:04:51 | 显示全部楼层
看来楼主C语言新手,把语句都放到函数外面去了。
C语言不是汇编,写到函数外面怎么可能得到执行呢,语法上也是不允许的。
函数外面只能放一些函数变量的声明定义,宏定义,编译指示符等等

出0入0汤圆

 楼主| 发表于 2014-10-30 11:14:14 | 显示全部楼层
本帖最后由 wirelessgo 于 2014-10-30 11:33 编辑
lcofjp 发表于 2014-10-30 11:04
看来楼主C语言新手,把语句都放到函数外面去了。
C语言不是汇编,写到函数外面怎么可能得到执行呢,语法上 ...


谢谢你的回复,是我搞错了。现在分到了两个文件里面,conf_osc.c 和conf_osc.h

conf_osc.h 的内容:
#ifndef CONF_OSC_H
#define CONF_OSC_H

#include <p33FJ32MC204.h>

extern void conf_osc(void);

#endif /*CONF_OSC_H*/


conf_osc.c 的内容:
#include "conf_osc.h"

extern void conf_osc(void) {

// Configure Oscillator to operate the device at 40Mhz
// Fosc= Fin*M/(N1*N2), Fcy=Fosc/2
// Fosc= 7.37*43/(2*2)=79.23MHz
PLLFBD = 37;//M=30;
CLKDIVbits.PLLPOST = 0;     // N1=2
CLKDIVbits.PLLPRE = 0;      // N2=2
OSCTUNbits.TUN = 23; //pll to 8M

//OSCTUN=0;                                        // Tune FRC oscillator, if FRC is used ?????pmsm?????

RCONbits.SWDTEN=0;  // Disable Watch Dog Timer

                                                                // Clock switch to incorporate PLL
__builtin_write_OSCCONH(0x01);  // Initiate Clock Switch to FRC with PLL (NOSC=0b001)
                                                               
__builtin_write_OSCCONL(0x01);                // Start clock switching

while(OSCCONbits.COSC != 0b001);  // Wait for Clock switch to occur

while(OSCCONbits.LOCK != 1){}; // Wait for PLL to lock

}



在main.c中包含 如下代码:
int main(){

conf_osc();

test_rtdm();

return 0;

}


现在编译,就不报错了

出0入4汤圆

发表于 2015-10-13 11:29:31 | 显示全部楼层
写在函数体外的语句,通通被当做data definition
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 06:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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