记录——学习STM32F103x(cs32f103x)的一个坑

本文的诞生源自于某个无良商家把CS32F103X当STM32F103X卖。。。

问题发现:

换了台新电脑,从官网重新安装了keil,下载时提示

“Connection refused due to device mismatch!”

查找问题:

这里直接跳过一段繁琐的过程,总之找到了一篇提出并解决了这个问题的文章:

https://zhuanlan.zhihu.com/p/347463935

总结来说,新的keil平台识别出了“盗版芯片”的芯片号,与stm32的芯片号不匹配,于是下载失败。

本文的作者通过查找芯片号找到了实际的芯片是CS32F103X。

解决方法是,下载该芯片的PACK,然后把头文件以及路径都换一下。

这个解决方式还算是方便的,我查找了一下这个芯片的数据手册,发现它的资源和架构大部分和STM32是重合的,这也是为什么在之前低版本keil下载能把stm32的代码下进cs32里。

也就是说,大部分(我还没都试过)原本的STM32F103X的代码除了头文件不一样,其他都是可以直接cv的。

 

一些添砖加瓦的工作:

当下载完CS32的pack后,可以直接引入头文件 #include<cs32f10x.h>,这里一般不会报错。

 

然后写一个简单的主函数(可以简单定义个变量),直接编译,之后应该会报错。

如果报错的是.h 文件,可以直接把文件名复制下来,去一个叫Keil_V5的文件夹搜索

那个Keil_V5是存放arm的pack和软件的地方。

7e272402b9de449d99bf157145795a55.png

大致长得像这样。

 

如果你已经下载完成了cs的pack,可以试着去这个地址

"......\Keil_V5\ARM\PACK\Keil\CS32F1xx_DFP\1.0.0"

然后开始文件搜索。

 

找到对应的文件后,复制文件路径,放进keil的文件路径中。

38987eb816824aa7adf5384cd6c3f486.png

 

点开图里的那个魔术棒,弹窗点击C/C++,在这个界面的下面有个include path。

35fbc6dfe60848bd9a669fd77a9c176c.png

在这个界面添加。

 

添加完所有文件后,我们还需要添加一个.s文件。(图中startup_cs32f10x_md.s)

de051c3a7ae446729731b0794a917019.png

这个大家也可以通过找文件的方式找到,需要说明的是,这个文件是基于单片机容量编写的启动文件,大家应该根据实际单片机容量选择(我这里随便挑了一个)。

找到这个文件后我们可以直接把它复制在我们的工程下面(和我们的主函数待一块),然后去Keil双击Source Group1将它添加。

 

最后,我还碰到一个问题,它的报错大概是这么说的“Undefined symbol SystemInit”

我查了一下原因,没太看明白,希望有大佬能指点一下,不过我找到的一个解决方法是,用txt打开启动文件把这么几句话注释掉(先去属性里把“只读”关掉)279ccd4fcd3d4e028eb9b561198659d5.png

从“IMPORT”到“BLX R0”。这里是汇编,注释用“;” 。

最后再编译一下,应该就能运行了。

#include <cs32f10x.h>

#define PAout(n) GPIOA->ODR ^= 1 << n;

int main()
{
    unsigned int i, j;
    RCC->APB2ENR = 1 << 2;
    GPIOA->CRL &= 0XFFFFFF0F;
    GPIOA->CRL |= 0X00000030;

    //unsigned int i,j; //声明不可在可执行语句后面(进函数前声明变量)C89标准//可以修改
    while (1)
    {

        PAout(1);

        i = 400;
        while (--i)
        {
            j = 1000;
            while (--j);
        }

        PAout(1);

        i = 400;
        while (--i)
        {
            j = 1000;
            while (--j);
        }
    }
}

一个简单的亮灯程序,测试一下下载效果,记得去debug勾选“Reset and Run”

81e4f8ebfbd54c5aa50c80e0f1422ca3.png

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值