草庐IT

STC32G资料及入门介绍

lunzilx 2023-06-22 原文

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

STC32G资料及入门介绍


前言

提示:这里可以添加本文要记录的大概内容:

STC32G是STC新推出的32位单片机,也就是广义的32位的8051单片机。实际上使用的是Intel的C251架构,因此在编译器上KeilC51是编译不了STC32G的工程的,要使用KEILC251。优势的话最大的就是价格了,STC32G12K128目前推广价格在5块钱左右(当前时间哈),LQFP48的封装,128K的Flash,4+8K的RAM,带USB带CAN。这个配置和价格还要啥自行车。而且本身LQFP48的封装,即便是ARM的架构,应用也不会太复杂。因此可能会替代很多低复杂度的32位ARM的场景。另外的话可以从51平台方便的过渡到这个平台,对于51使用者来说十分的友好。


提示:以下是本篇文章正文内容,下面案例可供参考

一、资料准备

STC32G数据手册
CSDN站内下载
STC32G12K128 最小系统原理图
CSDN站内下载
STC32G FreeRTOS例程
CSDN站内下载
KEIL C251
CSDN站内下载
提示:KEIL的注册自理哟~
STC最新下载软件 支持STC32系列 (6.89F以上版本才支持STC32G)
CSDN站内下载

二、工程介绍

1.文件架构

STC32G官方给的工程是基于FreeRTOS的,因此之前喜欢裸跑的小伙伴要自学一下FreeRTOS,不过这个也非常的简单上手非常快。
1.1

从上图可以看出,示例工程的文件架构分了六个部分。其中FreeRTOS目录下存放的是FreeRTOS的源码,这里所有的源码文件都包含在里面了,包括不常用的croutine.c,这个有时间具体研究一下,看看有没有用到。一般的小伙伴可以忽略这里,工程肯定是STC的工程师已经帮忙移植好了。直接用就行。
1.2

port目录下就是移植的部分了。代码也针对STC32G或者是C251平台做了适配。

static StackType_t data xPCL;
static StackType_t data xPCH;
static StackType_t data xPCB;

数据声明时候指定RAM存放位置

/*Setup the systick timer to generate the tick interrupts at the required
frequency. */
static void prvPortSetupTimerInterrupt( void )
{
    /* Timer0 work at 1T mode. */
    AUXR |= 0x80;

    /* Timer0 work at mode0 (16-bit auto reload mode) */
    TMOD &= ~0x0f;

    /* Initial timer0 reload value (1ms per cycle). */
    TL0 = ( uint8_t )( portRELOAD_VALUE );
    TH0 = ( uint8_t )( portRELOAD_VALUE >> 8 );

    /* Interrupts are disabled when this is called so
    the timer can be started here. */
    TR0 = 1;

    /* Enable timer0 interrupts. */
    ET0 = 1;
}

系统节拍定时,这里使用了TIMER0,这样像用户就不能再用TIMER0做其他应用了。这里不像ARM里面直接用SystemTick就可以。好在STC32G的串口不需要再占用串口资源了,不然定时器就有点紧张了。
另外堆栈库使用的是heap_1,FreeRTOS不同的HEAP库在Malloc和Free方面的策略不同,用户要注意一下。不过一般的应用需要使用Malloc和Free的概率也很低,毕竟还是有一定风险,用不好的话容易出错。
1.3

user里面存放的是上层应用代码,其中FreeRTOSConfig.h是FreeRTOS的配置文件,从这个文件里面也能了解很多内容。

#define configUSE_ROMHUGE                       0                       
#define MAIN_Fosc                               ( 24000000UL )          

首先可以看出这个工程所使用的是24M的时钟,置于是内部时钟还是外部时钟还没有研究。但是作者使用的无外部晶振的板子也可以正常运行。所以一般就不纠结了,一般的应用也足够,并且手册里提到过30M的内部晶振并不是很稳定。
另外configUSE_ROMHUGE的选项与用户代码的大小有关,如果用户代码超过了64K,则需要配置为HUGE模式。同时在KEIL里面的选项也需要进行配置,否则应该是编译会出问题。

#define configUSE_MALLOC_FAILED_HOOK            0                   

另外这个钩子没哟使用,一般任务在分配内存池不足的时候会调用这个钩子函数进行提示,还是比较有点用的,建议打开并配置上钩子函数。
其他没有深入的去看,系统节拍是1ms也是常规的配置。

另外这个目录下的putchar.c是用来做printf重定向的,可以在STC32G_UART.H这个头文件中定义打印的串口是哪个。示例工程里用的是UART2 波特率 115200。

#define	PRINTF_SELECT  UART2		

总结

以上就是今天分享的内容,内容补充中……

有关STC32G资料及入门介绍的更多相关文章

  1. Unity 热更新技术 | (三) Lua语言基本介绍及下载安装 - 2

    ?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------

  2. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  3. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  4. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  5. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  6. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  7. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  8. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  9. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  10. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

随机推荐