盘点STM32的国产替代者(2)
扫描二维码
随时随地手机看文章
一、搞点资料看看,电路图要搞到
之所以推荐下载这个压缩档,是因为里面有一个非常好的说明文件:
这个说明文件非常棒,介绍了每个目录的内容,为制作这个说明文件的小哥哥点赞!!!
电路图在这个压缩档有:
1. LED没有直接连到MCU引脚,需要准备连接导线;
2. 烧录调试接口貌似ST-LINK,准备一个高仿ST-LINK烧录器即可;
二、搭建环境,芯片的PACK安装
由于我的烧录器是ST-LINK,在配置中选择即可:
选择一下芯片算法,64K滴:
三、搞定代码,点亮屏幕
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
GPIO_Toggle_INIT();
while(1)
{
Delay_Ms(500);
PAout(0) ^= (1<<0);
}
}
四、学习将视频转GIF,看着方便
为了方便和朋友们交流,将源代码上传上来,下载请点击阅读原文。
2. 代码风格和ST一样一样滴,上手也快
3. 外设功能和ST有细微差异,看过手册也都能明白
4. 这块开发板的其它功能,待后续慢慢搞,后面准备搞个U盘自动更新功能,哈哈
习惯了STC和Arduino的串口下载,对于arm32-M3指令集的国产芯片CH32F103C8T6,也在摸索着使用串口下载。在开发板的包里,干货满满,但是手头上没有SWD接口的编程器。找了资料,STM32F103是可以用串口下载的。前提是,你要连接好PA9(UART1_TX),以及PA10(UART1_RX)到USB-TLL转接板,比如CH340G的小板。
另外,需要设置BOOT启动的方式。跳线接法:BOOT1 -->GND, BOOT0-->VCC,这样才会从芯片内的出厂固件内存引导启动,这里相当于Arduino的BootLoader的功能。平常的接法是BOOT0-->GND,这是从Flash区运行启动代码,跳过了厂家代码区。
2.硬件准备好后,需要软件。下载WCH_ISP_tool(2.8)下载链接.
安装好后,界面如图。
注意要选择CH32F1系列标签,Keil MDK编译器生成的Hex文件,需要再用户程序文件框内选择。
注意可以多试几次,比如插拔USB转串口小板。还有当出现“解除写保护”,需要先点击“解除保护”按钮。之后再点击下载。
4.测试UART_Printf串口打印功能
开发板的串口调试功能可以方便的输出一些具体的信息,作为程序运行的重要参考。这里我测试了math.h的正弦函数计算功能。算是发挥一下32位CPU的优势。想起来计算氢弹的理论的501机,每秒不过几十万次加法运算。这个机子已经远远超过了当年的庞然大物。
测试的源码:
main.c
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200); /* printf using USART1 */
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("This is printf example\r\n");
printf("sin(pi/3)=%f",sin(PI/3));
while(1)
{
}
}
附阅读材料:中国计算机60年国产计算机前史
点灯需要注意的是,led小灯没有连接到mcu的引脚上,需要自己用杜邦线连接一下
代码也很简单,有stm32经验的很容易
/********************************** (C) COPYRIGHT *******************************
* File Name : main.c
* Author : WCH
* Version : V1.0.0
* Date : 2020/04/30
* Description : Main program body.
*******************************************************************************/
#include "debug.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIOx->OUTDR ^= GPIO_Pin;
}
int main(void)
{
Delay_Init();
//USART_Printf_Init(115200);
//printf("SystemClk:%d\r\n",SystemCoreClock);
LED_Init();
while(1)
{
Delay_Ms(1000);
GPIO_TogglePin(GPIOA, GPIO_Pin_0);
}
}
添加串口1,通过串口接收中断来接收数据,接收到回车键,一帧数据结束。
主程序里处理串口数据(或丢弃或返回)
用其他usb转ttl工具,看看显示
串口调试助手显示结果
你认为这款开发板如何?之后嵌入式ARM还会继续登载国产替代者的更多测评信息。
▍ 推荐阅读
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!