IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STC32G资料及入门介绍 -> 正文阅读

[嵌入式]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		

总结

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:39:38  更:2022-07-17 16:43:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:28:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码