类型转换求教

2019-07-21 00:13发布

在写OLED显示程序,想要从串口发送字符串并显示在OLED上。
目前已实现获取串口数据
原子哥的代码里,定义了u8 Res
oled的字符串显示函数的参数为u8 *
问题是u8怎么转换为u8 *
虽然强制转换,通过串口打印在pc上显示没问题,但在oled端显示乱码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
2hen9x1
1楼-- · 2019-07-21 00:36
 精彩回答 2  元偷偷看……
mack13013
2楼-- · 2019-07-21 02:05
u8 * pRes = &Res;  
2hen9x1
3楼-- · 2019-07-21 03:51
mack13013 发表于 2019-6-8 09:08
u8 * pRes = &Res;

OLED显示还是会乱码但是直接定义一个变量char *temp = "hello world";的话又可以正常显示

定义了一个全局变量usart1_data来存放串口接收到的数据
这是主函数里的while循环
[mw_shl_code=applescript,true]u8 *temp = &usart1_data;
ssd1306_clear_screen(0x00);
ssd1306_display_string(10, 10, (u8 *)temp, 12,1);
ssd1306_refresh_gram();
delay_ms(3000);[/mw_shl_code]

这是ssd1306_display_string的函数

[mw_shl_code=applescript,true]void ssd1306_display_string(uint8_t chXpos, uint8_t chYpos, const uint8_t *pchString, uint8_t chSize, uint8_t chMode)
{
    while (*pchString != '') {      
        if (chXpos > (SSD1306_WIDTH - chSize / 2)) {
                        chXpos = 0;
                        chYpos += chSize;
                        if (chYpos > (SSD1306_HEIGHT - chSize)) {
                                chYpos = chXpos = 0;
                                ssd1306_clear_screen(0x00);
                        }
                }
               
        ssd1306_display_char(chXpos, chYpos, *pchString, chSize, chMode);
        chXpos += chSize / 2;
        pchString ++;
    }
}[/mw_shl_code]
2hen9x1
4楼-- · 2019-07-21 04:02
自己顶一下
mack13013
5楼-- · 2019-07-21 04:35
 精彩回答 2  元偷偷看……

一周热门 更多>