硬件环境AMOMCU的CC2650DK V0.2;
使用例程contiki/examples/hello-world;
经过前一阶段对Contiki的深入了解,目前算是对定时器和进程调用有了一个全面的了解。好吧开始和printf较真。例程中默认输出是到串口的,而我想让他输出到OLCD上。 如果您有同样的目的或需要可以继续往下看:
printf与putchar
contiki中不同平台的输出相关函数多在cpu路径下,以CC26XX为例,在contiki/cpu/cc26xx/putchar.c文件中。
文件内包含三个函数:
1 | int putchar(int c); |
以int putchar(int c)
函数为例进行说明,该函数完成将单个数据进行发送。而发送是通过函数中的语句cc26xx_uart_write_byte(c);
实现的,那么移植就很简单了只要在该语句出现的地方放上实现相同功能,只不过是输出到LCD的函数即可,此处为olcd_write_byte(c);
接口初始化
同样参考串口的初始化函数,参考从main函数分析contiki,可以找到main函数相关的描述,分析。结论串口初始化在进入main函数的while(1)之前完成,更进一步是在main函数中printf函数执行之前进行的。
此处将相应函数放在了led_init之后:
1 | leds_init(); |
hw_lcd_init函数体根据屏的不同也会有所不同。此处参考了开发板提供的源码,最终代码如下:
1 |
|
其中lcd_x和lcd_y为屏坐标的全局变量,初始化为(0, 0)。LCD_WrCmd函数为开发板提供的源码,直接使用。
olcd_write_byte函数
上文提到的olcd_write_byte函数体如下:
1 |
|