stm32学习中遇到的问题和解决方法

我用的是stm32f103c8t6,具体的软件可以到哔哩哔哩看江科大自协化(现在叫做江协科技)

在此记录下学习中遇到的问题。

一、stm32和st-link2的连接

最开始单片机和st-link2的连接出错了,连接下面的引脚,而且连接要一一对应,引脚可以一个一个连接,stm32和st-link2的顺序并不一定能对上。

如果没一一对应连接程序并不能下载到stm32中。a3ed5e0d5b4c460e8a6e44f75129b0e4.jpg

二、程序问题

1.注意stm32的代码结尾要空一格

2.注意下载后出现这个是因为LINK和32并没有连接好,可以检查检查LINK的线是否和32一一对应了,也可能是LINK或者32坏了…

 88549720767c412281d590bec5ac8677.png

 三、再就是OLED显示汉字程序

这个我找了好久才遇到的一个合适的,可以到哔哩哔哩搜索这个视频观看代码

【0.96寸OLED如何显示汉字(iic通信)-哔哩哔哩】 https://b23.tv/5xeB59y

也可以直接用下面的

首先要了解OLED是如何显示东西的,可以搜一搜其他人的详细讲解,然后按我理解显示东西的步骤就是先对这个东西取模,然后转换成01的信号给OLED再显示,这便要用到取模软件,江科大的资料中也有相应的软件,我们可以打开模块资料,再打开8-OLED显示屏,再打开取字模软件,再打开中景园OLE显示屏专用取模工具,点开PCtoLCD2002,再点开PCtoLCD2002应用程序就可以进行取模了

下面是取模的步骤

1.这是打开软件后的界面(有改动)

29dfa90ed04341afa763c31be960bcd1.png

 2.点开我所圈的

5a78a62152da4c3391effdc92e7cc312.png

 3.对照着图片改成一样的,别忘了点确定,最重要的是改成c51格式,和像素大小改成14(像素不改会有点问题)

fe46e64b5c434956aa3336b288d0f7aa.png

  4.输入你想要的汉字,点击生成字模并给其复制下来

75aa833657c3491e9f181de778d8f432.png

 5.接下来在江科大的资料中找到程序源码中4-1OLED显示屏的程序打开,再打开OLED_Font.h,在最后加入以下代码

const  char Font_Chinese[][32]=
{ 
{0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00},
{0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00},/*"你",0*/
{0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00},
{0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00},/*"好",1*/
};

6.再打开OLED.c,在其中加入下面这串代码

void OLED_ShowChinese(uint8_t Line,uint8_t Column,uint8_t num)
{
    uint8_t i;
    OLED_SetCursor ((Line - 1)*2,(Column - 1)*16);
    for(i = 0;i<16;i++)
    {
 OLED_WriteData(Font_Chinese[2*num[i]);
    }
OLED_SetCursor ((Line -1)*2+1(Column-1)*16);
    for(i = 0;i<16;i++)
    {
OLED_WriteDataFont_Chinese[2*num+1][i]);
    }
}

7.再在OLED.h中加入

void OLED_ShowChinese(uint8_t Line,uint8_t Column,uint8_t num);

8.最后在主函数中加入

OLED_ShowChinese(1,4,0);
OLED_ShowChinese(1,5,1);

(1,4,0)也代表在OLED屏幕的第一行第四列上显示第一个汉字。OLED上便能显示你好。

四、使用小技巧

 1、Debug

①、可以用来实时监测一个变量的值 

 步骤:

       首先,选中想要查看值的变量;

        然后,右键选择add然后选择Witch1;

        然后就可以在右下方见到要看的变量;

        最后点击左上方的运行符号就可以了。

2、Ctrl+f可以搜索代码中已写的变量在哪里

3、Ctrl +空格可以找到相关的函数和变量的东西 

bdd781cab9944f3bb169a262b5534008.png

五、程序

1、呼吸灯

2、OLED显示屏

3、L298N 

4、串口(可当蓝牙,可与其他通信)

①、把接收到的字符串转换为整数(学习K210与stm32通信时补充)-----------需要用到atoi()函数

首先加上头文件#include "stdlib.h"

然后需要定义一个整数,比如int a;

还有需要转换的字符串,比如char Angle[30];Angle[0]='1 ';Angle[1]='2 ';Angle[2]='3 ';Angle[3]='\0';

然后a=atoi(Angle);

a就是123了。

以下是C语言的代码

#include "stdio.h"
#include "stdlib.h"
int main()
{
int a;
char Angle[30];
 Angle[0]='1';
 Angle[1]='2';
 Angle[2]='3';
 Angle[3]='\0';
  a=atoi(Angle);
printf("%d",a);
return(0);
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值