+ 建立基于C文件的工程
时间:10-02
整理:3721RD
点击:
背景
光盘中的例程都是静态库,除了个main.c就没有其他的C文件了。
这是因为创龙把这些C文件全都做成了静态库,工程中只要包含了这个库就行了。这也是为什么在建工程时,创龙的视频是要把output format设为eabi(ELF)的原因。
还有一些是创龙自己的函数,在TL6748.h中有声明,但是找不到源码文件。
就如LED的例子中,这些函数都在TL6748.h中,也找不到源码。
对于初学者还是要了解其中的寄存器操作还是很必要的吧。
正文
一、新建一个只有main.c的空工程,这里就可以按视频中的方法建,或按自己的习惯建都行。
二、安装了C6748_StarterWare_1_20_04_01后,从其中复制出drivers中的gpio.c与psc.c,为了方便把所有的include文件复制到工程目录,还有cmd文件,与ccxml文件,这两个可以用创龙的,也可以自己新建。
这是CCS安装目录中的StarterWare。
这是CCS中工程的结构,头文件太多,显示不全。
三、至于main文件,就直接用例程中的那个吧,可以把内容复制过来。去掉TL6748.h。
四、添加GPIO复用设置函数。上面提到的创龙的那四个函数,我又加上了核心板上的那两个LED的GPIO设置,光盘中的例程没对这两个GPIO设置,所以上电后这两个LED是微亮的。
五、添加头文件路径到工程中。
六、基本完成,编译、烧写下试试。会看到与光盘例程相同的结果,核心板上的两个LED灭了。
建议
一、例程提供C文件版本,更方便学习。其是有官方的C文件,最好创龙自己的也开源出来才好。
二、单GPIO_LED这个工程,程序中是把核心板上的两个LED关了,可以没有设置GPIO为输入输出功能,所以两个LED发微光。
光盘中的例程都是静态库,除了个main.c就没有其他的C文件了。
这是因为创龙把这些C文件全都做成了静态库,工程中只要包含了这个库就行了。这也是为什么在建工程时,创龙的视频是要把output format设为eabi(ELF)的原因。
还有一些是创龙自己的函数,在TL6748.h中有声明,但是找不到源码文件。
就如LED的例子中,这些函数都在TL6748.h中,也找不到源码。
对于初学者还是要了解其中的寄存器操作还是很必要的吧。
- void GPIOBankPinMuxSet(void)
- {
- // 配置相应的 GPIO 口功能为普通输入输出口
- // 底板 LED
- GPIOBank0Pin0PinMuxSetup();
- GPIOBank0Pin1PinMuxSetup();
- GPIOBank0Pin2PinMuxSetup();
- GPIOBank0Pin5PinMuxSetup();
- }
正文
一、新建一个只有main.c的空工程,这里就可以按视频中的方法建,或按自己的习惯建都行。
二、安装了C6748_StarterWare_1_20_04_01后,从其中复制出drivers中的gpio.c与psc.c,为了方便把所有的include文件复制到工程目录,还有cmd文件,与ccxml文件,这两个可以用创龙的,也可以自己新建。
这是CCS安装目录中的StarterWare。
这是CCS中工程的结构,头文件太多,显示不全。
三、至于main文件,就直接用例程中的那个吧,可以把内容复制过来。去掉TL6748.h。
四、添加GPIO复用设置函数。上面提到的创龙的那四个函数,我又加上了核心板上的那两个LED的GPIO设置,光盘中的例程没对这两个GPIO设置,所以上电后这两个LED是微亮的。
- #define PINMUX1_GPIO0_0_ENABLE (SYSCFG_PINMUX1_PINMUX1_31_28_GPIO0_0 << \
- SYSCFG_PINMUX1_PINMUX1_31_28_SHIFT)
- #define PINMUX1_GPIO0_1_ENABLE (SYSCFG_PINMUX1_PINMUX1_27_24_GPIO0_1 << \
- SYSCFG_PINMUX1_PINMUX1_27_24_SHIFT)
- #define PINMUX1_GPIO0_2_ENABLE (SYSCFG_PINMUX1_PINMUX1_23_20_GPIO0_2 << \
- SYSCFG_PINMUX1_PINMUX1_23_20_SHIFT)
- #define PINMUX1_GPIO0_5_ENABLE (SYSCFG_PINMUX1_PINMUX1_11_8_GPIO0_5 << \
- SYSCFG_PINMUX1_PINMUX1_11_8_SHIFT)
- void GPIOBank0Pin0PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
- ~(SYSCFG_PINMUX1_PINMUX1_31_28));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
- (PINMUX1_GPIO0_0_ENABLE | savePinmux);
- }
- void GPIOBank0Pin1PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
- ~(SYSCFG_PINMUX1_PINMUX1_27_24));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
- (PINMUX1_GPIO0_1_ENABLE | savePinmux);
- }
- void GPIOBank0Pin2PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
- ~(SYSCFG_PINMUX1_PINMUX1_23_20));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
- (PINMUX1_GPIO0_2_ENABLE | savePinmux);
- }
- void GPIOBank0Pin5PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) &
- ~(SYSCFG_PINMUX1_PINMUX1_11_8));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(1)) =
- (PINMUX1_GPIO0_5_ENABLE | savePinmux);
- }
- #define PINMUX13_GPIO6_12_ENABLE (SYSCFG_PINMUX13_PINMUX13_15_12_GPIO6_12 << \
- SYSCFG_PINMUX13_PINMUX13_15_12_SHIFT)
- #define PINMUX13_GPIO6_13_ENABLE (SYSCFG_PINMUX13_PINMUX13_11_8_GPIO6_13 << \
- SYSCFG_PINMUX13_PINMUX13_11_8_SHIFT)
- void GPIOBank6Pin12PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) &
- ~(SYSCFG_PINMUX13_PINMUX13_15_12));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) =
- (PINMUX13_GPIO6_12_ENABLE | savePinmux);
- }
- void GPIOBank6Pin13PinMuxSetup(void)
- {
- unsigned int savePinmux = 0;
- savePinmux = (HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) &
- ~(SYSCFG_PINMUX13_PINMUX13_11_8));
- HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) =
- (PINMUX13_GPIO6_13_ENABLE | savePinmux);
- }
- void GPIOBankPinMuxSet(void)
- {
- #if 1
- // 配置相应的 GPIO 口功能为普通输入输出口
- // 底板 LED
- GPIOBank0Pin0PinMuxSetup();
- GPIOBank0Pin1PinMuxSetup();
- GPIOBank0Pin2PinMuxSetup();
- GPIOBank0Pin5PinMuxSetup();
- GPIOBank6Pin12PinMuxSetup();
- GPIOBank6Pin13PinMuxSetup();
- #endif
- }
五、添加头文件路径到工程中。
六、基本完成,编译、烧写下试试。会看到与光盘例程相同的结果,核心板上的两个LED灭了。
建议
一、例程提供C文件版本,更方便学习。其是有官方的C文件,最好创龙自己的也开源出来才好。
二、单GPIO_LED这个工程,程序中是把核心板上的两个LED关了,可以没有设置GPIO为输入输出功能,所以两个LED发微光。
小编可以附上工程吗~我想建立自己的工程文件老失败,不知道咋办