1. 在不同用户中进行工程移植
有时候我们需要将自己编写的工程交给其他人,那么在TI的SDK下,我们应该如何打包移植?该章节则指导大家如何将SDK中的例子工程移植出来。
- 找到要移植的例程并复制。(这里使用例程中的空工程 empty)
- 将之前复制的例程粘贴到SDK根目录下。
- 去到SDK目录下的<SDK根目录>\source\ti\driverlib 路径中,将driverlib 文件夹下的全部文件进行复制。(注意是文件,不要复制文件夹)
- 回到例程的路径下,新建一个ti文件夹,将我们刚才复制的全部文件粘贴到此处。
- 删除工程中多余的文件夹,节省空间。
一个完整的工程现在是这样的:
- 打开工程的keil启动文件。
- 打开keil项目管理。
- 将 Driverlib 文件夹下的文件删除。(如果没有则忽略)
- 给Driverlib 文件夹新添我们之前粘贴过来的文件。
- 点击魔法棒,更新头文件路径。
- 编译查看错误。发现没有ti_msp_dl_congif.h文件。
- 打开SYSCONFIG图像工具。重新保存一次即可。
这里还有用户看到了图片中有一句“系统找不到指定的路径”,这里是因为工程进行了位置移植,导致之前的运行文件路径不对,这个并不妨碍到工程编译,如果想要修改正确,可以进行下一个步骤。
- 点击魔法棒打开 User 选项卡。
- 修改 Before Build/Rebuild 下的 Run #1 选项中的路径。
当前的路径是这样的:
cmd.exe /C "$P../../../../../../tools/keil/syscfg.bat '$P' empty.syscfg"
其实修改方法就是指定到SDK路径下的/tools/keil/syscfg.bat。../代表的是从工程的keil启动文件位置返回上一个文件夹。而tools 文件夹是在SDK根目录下。所以应该修改为以下路径:
cmd.exe /C "$P../../tools/keil/syscfg.bat '$P' empty.syscfg"
2
- 修改保存完成后,重新编译。重新编译后就不会看的有路径问题了。
2. 使用例程中I2C例程换了个I2C引脚后,通信时成功时失败
因为I2C协议要求两根通信线SCL和SDA都得配为开漏模式。而目前MSPM0系列的开漏模式只有PA0和PA1支持,其他引脚因为不支持开漏模式,再加上上电时引脚的电平是不确定的,所以导致I2C通信时成功时失败。故大家在使用软件I2C时,请务必使用PA0和PA1。
扩充知识
I2C总线支持接多个从机设备,只要他们的通信地址不同即可,而大多数模块的I2C通信地址都不一样,所以支持两根线接多个I2C设备。
3. 使用立创的百度网盘例程会报错
请务必将例程放置SDK的目录下。并且不能有重复目录,比如我的工程是led。
LED
-> keil
-> ti
-> empty.c
-> empty.syscfg
-> Event.dot
-> ti_msp_dl_config.c
-> ti_msp_dl_config.h
按照以上的文件目录形式才对。下面是错误案例:
LED
->LED
->keil
->ti
->empty.c
->empty.syscfg
->Event.dot
->ti_msp_dl_config.c
->ti_msp_dl_config.h
上面的错误案例中多了一个LED的目录,就会导致工程找不到其他的文件路径。
4. 使用PA22和PA23引脚的串口2功能会乱码问题
因为串口2的PA23-TX引脚 是ADC的参考电压和串口的TX引脚共用,为了两者兼容我们加了两个电容。如果你不使用参考电压,要使用串口2的话,需要把这两个电容拆掉,不然使用串口2会乱码
5. 开启串口2无法正常执行代码
开启串口2之后代码会卡死。
请将通信模块接入串口2的引脚中,如果串口2的引脚空置会卡死。
6. 串口能够发送无法接收
解决办法: 图中的局部变量uart_data必须改为全局变量,并通关键字 volatile 定义。代码如下:
volatile unsigned char uart_data = 0;
因为工程开启了O2级优化,所以我们在中断中的数据定义,必须使用volatile定义。