我是靠谱客的博主 机灵酸奶,最近开发中收集的这篇文章主要介绍STC32G资料及入门介绍前言一、资料准备二、工程介绍总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

STC32G资料及入门介绍

  • 前言
  • 一、资料准备
  • 二、工程介绍
    • 1.文件架构
  • 总结


前言

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

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资料及入门介绍前言一、资料准备二、工程介绍总结的全部内容,希望文章能够帮你解决STC32G资料及入门介绍前言一、资料准备二、工程介绍总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部