<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[嵌入式羊圈]]></title><description><![CDATA[分享嵌入式、MCU相关软件，欢迎来到嵌入式羊圈成为一只小羊人！]]></description><link>https://blog.youkuaiyun.com/u011350258</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011350258]]></copyright><item><title><![CDATA[03、aardio基本语法之数据类型-字符串]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/149567552</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/149567552</guid><author>u011350258</author><pubDate>Wed, 23 Jul 2025 12:32:45 +0800</pubDate><description><![CDATA[在 aardio 中使用双引号（ " ）或反引号（ ` ）包含原始字符串。原始字符串不处理转义符，在原始字符串中单个反斜杠"\"表示的就是字面值，不需要用双反斜杠表示单个反斜杠。双引号中的原始字符串可以用两个双引号表示双引号自身。反引号中的原始字符串可以用两个反引号表示反引号自身。原始字符串可以包含换行，回车 + 换行符、单换行符、单回车符都会被规范化为单个换行符（不会包含回车符）。var strLine ="第一行第二行";]]></description><category></category></item><item><title><![CDATA[02、aardio基本语法之数据类型-数值与进制]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/149567537</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/149567537</guid><author>u011350258</author><pubDate>Wed, 23 Jul 2025 12:32:08 +0800</pubDate><description><![CDATA[自定义进制语法:如果一个数值包含号，则号前面是自定义进制(大于等于 2 且小于 36 )，号后面是数值，10 以上的数用a-z范围的大小写字母表示。var a = 2#010 //表示一个2进制数010var c = 36#Z7 //表示一个36进制数Z7console.log( 2#10000000000000000 /*aardio可以直接表示2进制数,1后面16个0*/ );console.log( 2#10000000000000000 >>> 16 ,"65536右移16位变成了1")]]></description><category></category></item><item><title><![CDATA[01、aardio基本语法之数据类型-基本数据类型]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/149567450</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/149567450</guid><author>u011350258</author><pubDate>Wed, 23 Jul 2025 12:30:24 +0800</pubDate><description><![CDATA[null 标识空值、未定义的值。所有变量默认初始值为 null。null 表示没有存储任何数据，将一个变量赋值为 null 等于删除这个变量。地址为 0 的指针值为 null，任何时候写是多余无意义的。调用函数时，留空的调用参数等价于传 null 参数。例如等价于。]]></description><category></category></item><item><title><![CDATA[00、第一个aardio程序]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/149327957</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/149327957</guid><author>u011350258</author><pubDate>Mon, 14 Jul 2025 12:51:53 +0800</pubDate><description><![CDATA[是一个桌面软件快速开发工具，专用于 windows 操作系统。相较于其它桌面应用开发平台，比较小众。虽然小众，但是在快速开发小工具的场景还是很有优势的。目前也有很多好用的库可以直接调用。开发的程序可以生成单个可执行文件exe，且体积比较小，方便使用。]]></description><category></category></item><item><title><![CDATA[飞牛NAS在docker容器安装MySQL并搭建Gitea环境]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/148950436</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/148950436</guid><author>u011350258</author><pubDate>Fri, 27 Jun 2025 12:39:22 +0800</pubDate><description><![CDATA[按图照抄，把代码复制进去，只有【MYSQL_ROOT_PASSWORD】后面的【as123456】是数据库的登录密码自己换成你自己的密码，这个密码很重要，要记好！​	打开桌面的【Docker】应用，点击右上角的添加容器，容器名称、资源限制任意即可，【勾选☑️】开机自动开启。​	在fnOS中打开【Docker】应用，选择镜像仓库输入【MySQL】搜索镜像，找到自己需要的镜像下载。找到容器中已经启动运行的【MySQL】，点击容器的【…输入部署的时候设置的 【root】 密码，上面让记住的那个密码哦！]]></description><category></category></item><item><title><![CDATA[17、SysTick—系统定时器]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/126749141</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/126749141</guid><author>u011350258</author><pubDate>Wed, 07 Sep 2022 16:42:36 +0800</pubDate><description><![CDATA[SysTick—系统定时器是属于CM3内核中的一个外设，内嵌在NVIC中。系统定时器是一个 24bit 的向下递减的计数器，计数器每计数一次的时间为1/SYSCLK，一般我们设置系统时钟SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候，系统定时器就产生一次中断，以此循环往复。因为SysTick是属于CM3内核的外设，所以所有基于CM3内核的单片机都具有这个系统定时器，使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统，用于产生时基，维持操作系统的心跳。]]></description><category></category></item><item><title><![CDATA[16、EXTI—外部中断事件控制器]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/126739368</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/126739368</guid><author>u011350258</author><pubDate>Wed, 07 Sep 2022 09:52:46 +0800</pubDate><description><![CDATA[外部中断/事件控制器，管理了控制器的 20 个中断/事件线。每个中断/事件线都对应有一个边沿检测器，可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置，可以单独配置为中断或者事件，以及触发事件的属性。]]></description><category></category></item><item><title><![CDATA[15、STM32 中断应用概览]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/126720085</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/126720085</guid><author>u011350258</author><pubDate>Tue, 06 Sep 2022 10:37:30 +0800</pubDate><description><![CDATA[在讲如何配置中断优先级之前，我们需要先了解下NVIC。NVIC是嵌套向量中断控制器，控制着整个芯片中断相关的功能，它跟内核紧密耦合，是内核里面的一个外设。但是各个芯片厂商在设计芯片的时候会对Cortex-M3内核里面的NVIC进行裁剪，把不需要的部分去掉，所以说STM32的NVIC是Cortex-M3的NVIC的一个子集。在固件库中，NVIC 的结构体定义可谓是颇有远虑，给每个寄存器都预留了很多位， 恐怕为的是日后扩展功能。]]></description><category></category></item><item><title><![CDATA[17、STM8S通用同步异步收发器(UART)]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/124899854</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/124899854</guid><author>u011350258</author><pubDate>Sat, 21 May 2022 16:29:38 +0800</pubDate><description><![CDATA[文章目录1、概述2、串口主要特点3、UART功能描述4、UART主要特点5、异步串行通信的字符格式6、串行通信的传送速率
1、概述
  STM8S 微控制器家族的通用同步异步收发器（UART1，UART2 或者 UART3） 提供了一种灵活的方法与使用工业标准 NRZ 异步串行数据格式的外部设备之间 进行全双工数据交换。STM8 的 UART 提供范围的波特率选择，并且支持多处理 器通讯。UART 也支持LIN（局部互联网）协议版本 1.3,2.0,和 2.1 以及在主模式 下的 J2602。
UART1 ]]></description><category></category></item><item><title><![CDATA[01、汇编语言概述]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/124856257</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/124856257</guid><author>u011350258</author><pubDate>Thu, 19 May 2022 09:42:39 +0800</pubDate><description><![CDATA[文章目录1、前言2、汇编语言是什么3、来历4、寄存器5、寄存器的种类6、内存模式：Heap7、内存模型：Stack8、CPU指令8.1、一个实例8.2、push指令8.3、call指令8.4、mov指令8.5、add指令8.6、pop指令8.7、ret指令
1、前言

  早起入门单片机的时候，学习的C语言，程序编写也比较方便。近期由于换了个工作环境，使用的单片机不支持 C 编译，只能用汇编进行编程开发。于是就捡起来重新学习汇编语言。心想多学点知识肯定对自己是有好处的。所以想在自己学习汇编的同时做好学习笔记]]></description><category></category></item><item><title><![CDATA[14、RCC—使用HSE&HSI配置时钟]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122669276</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122669276</guid><author>u011350258</author><pubDate>Mon, 24 Jan 2022 15:59:19 +0800</pubDate><description><![CDATA[文章目录1、RCC主要作用—时钟部分2、RCC 框图剖析—时钟部分2.1、系统时钟2.1.1、①HSE高速外部时钟信号2.1.2、②PLL时钟源2.1.3、③PLL时钟 PLLCLK2.1.4、④系统时钟SYSCLK2.1.5、⑤AHB总线时钟HCLK2.1.6、⑥APB2总线时钟 HCLK22.1.7、⑦APB1总线时钟 HCLK12.1.8、设置系统时钟库函数2.2、其他时钟2.2.1、A、USB 时钟2.2.2、B、Cortex 系统时钟2.2.3、C、ADC时钟2.2.4、D、RTC时钟、独立看门狗]]></description><category></category></item><item><title><![CDATA[13、启动文件详解]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122648383</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122648383</guid><author>u011350258</author><pubDate>Sun, 23 Jan 2022 10:52:24 +0800</pubDate><description><![CDATA[文章目录1、启动文件简介2、查找 ARM 汇编指令3、启动文件代码讲解3.1、Stack—栈3.2、Heap堆3.3、向量表3.4、复位程序3.5、中断服务程序3.6、用户堆栈初始化
1、启动文件简介
启动文件由汇编编写，是系统上电复位后第一个执行的程序。主要做了以下工作：

初始化堆栈指针 SP=_initial_sp
初始化 PC 指针=Reset_Handler
初始化中断向量表
配置系统时钟
调用 C 库函数 _main 初始化用户堆栈，从而最终调用 main 函数去到 C 的世界

2、查找 AR]]></description><category></category></item><item><title><![CDATA[12、GPIO—位带操作]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122637908</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122637908</guid><author>u011350258</author><pubDate>Sat, 22 Jan 2022 15:11:20 +0800</pubDate><description><![CDATA[文章目录1、位带简介2、外设位带区3、SRAM位带区4、位带区和位带别名区地址转换4.1、外设位带别名区地址4.2、SRAM位带别名区地址4.3、统一公式5、GPIO位带操作5.1、GPIO寄存器映射5.2、GPIO位操作5.3、主函数
1、位带简介
  位操作就是可以单独的对一个比特位读和写，这个在 51 单片机中非常常见。51 单片 机中通过关键字 sbit 来实现位定义，STM32 没有这样的关键字，而是通过访问位带别名区 来实现。
  在 STM32 中，有两个地方实现了位带，一个是 SRAM 区的]]></description><category></category></item><item><title><![CDATA[11、GPIO输入—按键检测]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122623171</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122623171</guid><author>u011350258</author><pubDate>Fri, 21 Jan 2022 15:49:00 +0800</pubDate><description><![CDATA[文章目录0、前言1、硬件设计2、软件设计2.1、编程要点2.2、代码分析2.2.1、按键引脚宏定义2.2.2、按键 GPIO 初始化函数2.2.3、检测按键的状态2.2.4、主函数2.3、下载验证
0、前言
  按键检测实验到 GPIO 外设的基本输入功能，本章中不在赘述 GPIO 外设的概念，如您忘记了，可重读前面“GPIO 框图剖析”小节，STM32 HAL 库中 GPIO 初始化结构体GPIO_TypeDef 的定义与【定义引脚模式的枚举类型】小节中讲解的相同。
1、硬件设计
  按键机械触点断开、闭]]></description><category></category></item><item><title><![CDATA[10、GPIO输出—使用固件库点亮LED灯]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122615076</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122615076</guid><author>u011350258</author><pubDate>Fri, 21 Jan 2022 09:54:12 +0800</pubDate><description><![CDATA[文章目录0、前言1、硬件设计2、软件设计2.1、编程要点2.2、代码分析2.2.1、LED灯引脚宏定义2.2.2、控制LED 灯亮灭状态的宏定义2.2.3、LED GPIO初始化函数2.2.4、主函数2.3、下载验证3、STM32固件库补充知识3.1、SystemInit函数去哪了？3.2、断言3.3、Doxygen 注释规范3.4、防止头文件重复包含
0、前言
  利用固件库建立好的工程模板，就可以方便地使用 【STM32标准库】或【STM32HAL库】编写应用程序了， 可以说从这一章我们才开始迈入 ST]]></description><category></category></item><item><title><![CDATA[08、初识STM32库]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122583501</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122583501</guid><author>u011350258</author><pubDate>Wed, 19 Jan 2022 16:10:41 +0800</pubDate><description><![CDATA[文章目录0、前言1、CMSIS标准及库层次关系2、标准库2.1、库目录、文件简介2.2、库各文件间的关系2.3、使用帮助文档3、HAL库3.1、库目录、文件简介3.2、库各文件间的关系3.3、使用帮助文档
0、前言
  在上一章中，我们构建了几个控制 GPIO 外设的函数，算是实现了函数库的雏形，但 GPIO 还有很多功能函数我们没有实现，而且 STM32 芯片不仅仅只有 GPIO 这一个外设。 如果我们想要亲自完成这个函数库，工作量非常巨大。ST 公司提供的 标准软件库 或者 HAL软件库，包含了 STM]]></description><category></category></item><item><title><![CDATA[09、新建工程模板]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122583393</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122583393</guid><author>u011350258</author><pubDate>Wed, 19 Jan 2022 16:07:33 +0800</pubDate><description><![CDATA[文章目录1、基于标准库&amp;HAL库手动新建工程1.1、新建本地工程文件夹1.2、新建工程1.2.1、选择CPU 型号1.2.2、在线添加库文件1.2.3、添加组文件夹1.2.4、添加文件1.2.5、配置魔术棒选项卡1.2.6、仿真器配置1.2.7、选择CPU型号2、使用STM32CubeMX新建HAL工程2.1、软件安装2.1.1、安装 STM32CubeMX软件2.2、新建工程2.2.1、选择CPU 型号2.2.2、确认时钟源2.2.3、配置IO口2.2.4、配置系统时钟2.2.5、进一步配置IO ]]></description><category></category></item><item><title><![CDATA[07、自己写库—构建库函数雏形]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122558282</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122558282</guid><author>u011350258</author><pubDate>Tue, 18 Jan 2022 13:37:21 +0800</pubDate><description><![CDATA[文章目录0、前言1、什么是STM32标准库函数2、为什么采用库来开发及学习？3、实验：构建库函数雏形3.1、外设寄存器结构体定义3.2、外设存储器映射3.3、外设声明3.4、定义位操作函数3.5、定义初始化结构体 GPIO_InitTypeDef3.6、定义引脚模式的枚举类型3.7、定义GPIO 初始化函数3.8、使用函数点亮LED灯3.9、下载验证3.10、总结
0、前言
  虽然我们上面用寄存器点亮了 LED，乍看一下好像代码也很简单，但是我们别侥幸以后就可以一直用寄存器开发。在用寄存器点亮 LED 的]]></description><category></category></item><item><title><![CDATA[06、使用寄存器点亮LED灯]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122086598</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122086598</guid><author>u011350258</author><pubDate>Wed, 22 Dec 2021 15:14:48 +0800</pubDate><description><![CDATA[文章目录1、GPIO简介2、GPIO框图剖析2.1、基本结构分析2.2、GPIO工作模式3、实验：使用寄存器点亮LED灯3.1、硬件连接3.2、启动文件3.3、stm32f10x.h 文件3.4、main文件3.5、下载验证
1、GPIO简介
  GPIO 是通用输入输出端口的简称，简单来说就是 STM32 可控制的引脚，STM32 芯片 的 GPIO 引脚与外部设备连接起来，从而实现与外部通讯、控制以及数据采集的功能。 STM32 芯片的 GPIO 被分成很多组，每组有 16 个引脚，如型号为 STM32]]></description><category></category></item><item><title><![CDATA[05、新建工程—寄存器版]]></title><link>https://blog.youkuaiyun.com/u011350258/article/details/122071587</link><guid>https://blog.youkuaiyun.com/u011350258/article/details/122071587</guid><author>u011350258</author><pubDate>Tue, 21 Dec 2021 19:30:41 +0800</pubDate><description><![CDATA[文章目录1、新建工程1.1、新建本地工程文件夹1.2、新建工程2、下载程序
1、新建工程
1.1、新建本地工程文件夹
  为了工程目录更加清晰，我们在本地电脑上新建 1 个文件夹用于存放整个工程，如命名为“LED”，然后在该目录下新建2个文件夹，具体如下：
工程目录文件夹清单




名称
作用




Listing
存放编译器编译时候产生的  c/汇编/链接的列表清单


Output
存放编译产生的调试信息、hex 文件、预览信息、封装库等



在本地新建好文件夹后，在文件夹下新建一些文件：
工程目]]></description><category></category></item></channel></rss>