<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pink_lemon的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pink_lemon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pink_lemon]]></copyright><item><title><![CDATA[STM32F103C8T6进行DAC播放]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/122232886</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/122232886</guid><author>pink_lemon</author><pubDate>Thu, 30 Dec 2021 15:33:24 +0800</pubDate><description><![CDATA[1、使用DAC输出周期2khz的正弦波

建议先用单音音频（比如2000Hz的正弦波）的wav数据进行实验，通过DAC或PCM音频模块能够基本还原出原始正弦波声音后，再用语言/音乐信号进行实验。
生成单音正弦波
文件—&gt;新建—&gt;音频文件
...]]></description><category></category></item><item><title><![CDATA[STM32F103C8T6的flash读写]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/122225979</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/122225979</guid><author>pink_lemon</author><pubDate>Wed, 29 Dec 2021 23:09:48 +0800</pubDate><description><![CDATA[目录



一、使用cubeMX创建工程

二、编译运行调试

三、总结

四、参考资料

一、使用cubeMX创建工程

管脚设置如下





时钟设置如下



定时器配置

中断配置



设置堆栈大小



将事先准备好的flash.c 及flash.h加入到工程中（flash.h文件放在INC文件夹下即可）：



在main.c中添加以下代码









二、编译运行调试



没有问题，使用st-link连接stm32后进行调试



点击memory1，输入0x800c000...]]></description><category></category></item><item><title><![CDATA[使用Altium Designer 18绘制stm32f103c8t6和cd卡原理图]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/122090328</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/122090328</guid><author>pink_lemon</author><pubDate>Thu, 23 Dec 2021 23:01:26 +0800</pubDate><description><![CDATA[一、安装Altium Designer 18

首先下载Altium Designer 18和元件库，网盘链接：

https://www.aliyundrive.com/s/tZXniFAq33j

文件夹中包含安装教程，可以直接参考文档进行安装

安装和破解完毕后打开，添加元件库



添加完后点击关close



可以看到成功添加了元件库





二、绘制stm32f103c8t6电路原理图

首先新建一个PCB工程



然后右键PCB. Project1.PrjPCB



成...]]></description><category></category></item><item><title><![CDATA[适用于stm32f103c8t6的st-link接线方式]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/122117214</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/122117214</guid><author>pink_lemon</author><pubDate>Thu, 23 Dec 2021 22:26:24 +0800</pubDate><description><![CDATA[本博客适用于STM32F103C8T6最小系统板，外观如下



首先需要下载安装st-link的驱动，链接如下

链接：https://pan.baidu.com/s/1EwMTGsOyckWO-XTQbUJH4A
提取码：ykpz


st-link如下



对应最小系统板上的接口

注意，使用st-link时需要额外供电给最小系统板，最后接线结果如下



在keil中使用st-link不需要改option里面的debug，需要将use改成st-linkdebugger



点击s...]]></description><category></category></item><item><title><![CDATA[使用STM32F103C8T8写入SD卡]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/122074423</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/122074423</guid><author>pink_lemon</author><pubDate>Wed, 22 Dec 2021 16:34:54 +0800</pubDate><description><![CDATA[一、通过stm32cubeMX生成工程

我们使用的是f103c8t6，所以选择如下





PA4配置如下



PA5配置如下



PA6配置如下



PA7配置如下



PA9配置如下



PA10配置如下



PA13配置如下



PA14配置如下



勾选FATFS中的user-defined，保持默认不变



SYS设置



SPI1设置如下


...]]></description><category></category></item><item><title><![CDATA[stm32环境与Ubuntu环境下c语言的全局变量、局部变量、堆、栈]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121989134</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121989134</guid><author>pink_lemon</author><pubDate>Fri, 17 Dec 2021 22:27:47 +0800</pubDate><description><![CDATA[一、全局变量、局部变量、堆、栈

1.全局变量

变量分为局部与全局，局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量，只能被内部引用，而无法被其它对象或函数引用。全局变量既可以是某对象函数创建，也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。

2.局部变量

局部变量，也称内部变量，是指在一个函数内部或复合语句内部定义的变量。局部变量的作用域是定义该变量的函数或定义该变量的复合语句。局部变量的生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束。

]]></description><category></category></item><item><title><![CDATA[基于CLion编写STM32F103C8点亮LED的程序]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121955405</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121955405</guid><author>pink_lemon</author><pubDate>Wed, 15 Dec 2021 23:56:00 +0800</pubDate><description><![CDATA[一、安装Clion

首先进入Clion官网进行下载

CLion: A Cross-Platform IDE for C and C++ by JetBrains

下载完成后开始安装，安装目录任选



建议选择create desktop shortcut和add bin folder to the path，前者能够在桌面生成快捷方式，后者可以自动添加环境变量，省去了手动添加的步骤



安装完成后建议重启电脑




...]]></description><category></category></item><item><title><![CDATA[移植RTOS到STM32F103C8T6]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121666523</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121666523</guid><author>pink_lemon</author><pubDate>Thu, 02 Dec 2021 14:30:04 +0800</pubDate><description><![CDATA[一、利用STM32cubeMX生成HAL库文件

打开STM32cubeMX，创建新工程

配置PC13作为输出来点亮LED





修改RCC配置



修改sys配置



修改工程配置





生成代码

将下列代码放入main.c的while中


        HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
		HAL_Delay(500);
		HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO..]]></description><category></category></item><item><title><![CDATA[OLED屏显和汉字点阵编码]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121544199</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121544199</guid><author>pink_lemon</author><pubDate>Thu, 25 Nov 2021 22:52:52 +0800</pubDate><description><![CDATA[一、SPI协议

（1）SPI协议简介

SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)，即串行外围设备接口，是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间，要求通讯速率 较高的场合。

（2）SPI物理层

SPI 通讯设备之间的常用连接方式如下



SPI 通讯使用 3 条总线及片选线，3 条总线分别为 SCK、MOSI、MISO，片选线为 SS ，它们的作 用介绍如下：

①SS*(* Slave Se..]]></description><category></category></item><item><title><![CDATA[基于I2C协议的AHT20温湿度传感器的数据采集]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121479762</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121479762</guid><author>pink_lemon</author><pubDate>Mon, 22 Nov 2021 23:03:56 +0800</pubDate><description><![CDATA[目录



一、I2C协议

（1）I2C协议简介

（2）I2C物理层

（3）I2C协议层

起始信号与停止信号

数据有效性

响应

（4）STM32 的 I2C

软件I2C

硬件I2C

二、使用AHT20采集数据

（1）AHT20芯片的相关信息

（2）STM32F103C8T6连接AHT20进行温度采集

三、总结

四、参考资料

一、I2C协议

（1）I2C协议简介

I2C 通讯协议 (Inter － Integrated Circuit) 是由 Phiilps 公司开发的...]]></description><category></category></item><item><title><![CDATA[简单的串口通讯]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121407677</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121407677</guid><author>pink_lemon</author><pubDate>Thu, 18 Nov 2021 19:14:02 +0800</pubDate><description><![CDATA[将两台笔记本电脑用 usb转rs232 模块和杜邦线建立起串口连接。然后使用串口助手从上位机发送信息给下位机。注意TX接RX，RX接TX，不需要接电源和地。双方都打开串口后即可通讯。






]]></description><category></category></item><item><title><![CDATA[点阵汉字的字模读取与显示]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121385147</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121385147</guid><author>pink_lemon</author><pubDate>Wed, 17 Nov 2021 21:49:41 +0800</pubDate><description><![CDATA[目录



一、汉字编码

（1）区域码

（2）机内码

二、点阵字库

（1）16×16点阵

（2）14×14 与 12×12 点阵字库

三、汉字点阵获取

（1）利用区位码获取汉字

（2）利用汉字机内码获取汉字

三、Ubuntu环境下使用opencv显示图片和学号姓名

四、总结

一、汉字编码

（1）区域码

在国标 GD2312—80 中规定，所有的国标汉字及符号分配在一个 94 行、94 列的方阵中，方阵的每一行称为一个“区”，编号为 01 区到 94 区，每一列称为一个“位”，编..]]></description><category></category></item><item><title><![CDATA[STM32采用串口DMA方式向上位机连续发送数据]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121154938</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121154938</guid><author>pink_lemon</author><pubDate>Fri, 05 Nov 2021 03:18:33 +0800</pubDate><description><![CDATA[目录



一、DMA

1.DMA的概念

2.DMA传输数据的四个要素

3.STM32的DMA控制器特点

4.传输方式

二、用DMA方式连续向上位机发送数据

三、总结

四、参考资料

一、DMA

1.DMA的概念

DMA常用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完成，传输过程由DMA控制器来执行，无需CPU参与，从而节省CPU资源，提高利用率。

2.DMA传输数据的四个要素



3.STM32的DMA控制器特点

1.STM32]]></description><category></category></item><item><title><![CDATA[STM32F103使用中断方式控制LED]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/121147789</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/121147789</guid><author>pink_lemon</author><pubDate>Fri, 05 Nov 2021 00:32:49 +0800</pubDate><description><![CDATA[一、中断

1.什么是中断

中断是指计算机运行过程中，出现某些意外情况需主机干预时，机器能自动停止正在运行的程序并转入处理新情况的程序，处理完毕后又返回原被暂停的程序继续运行。

2.中断全过程



3.中断的作用



4.中断优先级



5.中断响应过程




二、STM32的中断系统

1.优先级分组



2.编程步骤



在上述过程中，均可以使用STM32cubeMX完成、

3.具体函数







三、使用中断方式点亮LED

首先使用STM32cubeMX创建工程，...]]></description><category></category></item><item><title><![CDATA[从认识串口到串口通讯]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120919231</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120919231</guid><author>pink_lemon</author><pubDate>Sat, 23 Oct 2021 22:51:25 +0800</pubDate><description><![CDATA[目录

一、串口协议和RS-232标准

二、TTL电平

三、RS232电平

四、USB/TTL转232"模块（以CH340芯片模块为例）的原理

五、使用stm32cubeMX生成工程及串口烧录HEX文件

六、串口通信

七、总结

八、参考文献

一、串口协议和RS-232标准

串口通信指串口按位（bit）发送和接收字节。尽管比特字节（byte）的串行通信慢，但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容，内容包含了起始位、主体数据、校验位及停止位，]]></description><category></category></item><item><title><![CDATA[STM32地址映射和寄存器映射]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120810343</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120810343</guid><author>pink_lemon</author><pubDate>Sun, 17 Oct 2021 17:16:47 +0800</pubDate><description><![CDATA[什么是寄存器以及什么是寄存器映射

在存储器 Block2 这块区域，设计的是片上外设，它们以四个字节为一个单元，共 32bit， 每一个单元对应不同的功能，当我们控制这些单元时就可以驱动外设工作。我们可以找到 每个单元的起始地址，然后通过 C 语言指针的操作方式来访问这些单元，如果每次都是通 过这种地址的方式来访问，不仅不好记忆还容易出错，这时我们可以根据每个单元功能的 不同，以功能为名给这个内存单元取一个别名，这个别名就是我们经常说的寄存器，这个 给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄]]></description><category></category></item><item><title><![CDATA[在STM32下用c语言和汇编语言混合编程]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120704148</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120704148</guid><author>pink_lemon</author><pubDate>Mon, 11 Oct 2021 16:06:03 +0800</pubDate><description><![CDATA[目录



一、例子

二 、修改函数类型

三、在汇编函数中调用一个C语言写的函数

四、总结

五、参考文献

一、例子

在项目下新建，main.c和fun.s代码如下

main.c



fun.s



然后执行后结果如下



设置得寄存器R1 R2的初始值为0，然后再c程序中调用汇编函数，即使用extern调用汇编函数，使达成其效果，使R1 R2从零开始逐一递加，直到加到十完成目标。

二 、修改函数类型

将原汇编语言 Init_1函数的类型改为 int Init_1(init) ，...]]></description><category></category></item><item><title><![CDATA[ubuntu20.04环境下安装opencv教程及测试]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120632557</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120632557</guid><author>pink_lemon</author><pubDate>Thu, 07 Oct 2021 15:50:55 +0800</pubDate><description><![CDATA[一、安装opencv

（1）下载opencv-3.4.15数据包

打开浏览器，进入下载地址Release OpenCV 3.4.15 · opencv/opencv · GitHub，选择Source code(zip)进行下载



（2）解压

将下载的文件移动到
]]></description><category></category></item><item><title><![CDATA[linux gcc常用命令]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120621590</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120621590</guid><author>pink_lemon</author><pubDate>Wed, 06 Oct 2021 15:02:53 +0800</pubDate><description><![CDATA[目录

一、单程序编译

（1）预处理

（2）编译为汇编语代码

（3）汇编

（4）链接

（5）运行

二、多程序编译

三、检错

四、库文件链接

五、gcc编译工具集中各软件

GCC

Binutils

C运行库

六、ELF文件

七、总结

八、参考文献

一、单程序编译

以下面这个程序为例


//hello.c
#include&lt;stdio.h&gt;
int main()
{
     printf("hello world\n");
     return 0;
}

（]]></description><category></category></item><item><title><![CDATA[linux环境下用gcc生成.a静态库和.so动态库]]></title><link>https://blog.youkuaiyun.com/pink_lemon/article/details/120613458</link><guid>https://blog.youkuaiyun.com/pink_lemon/article/details/120613458</guid><author>pink_lemon</author><pubDate>Tue, 05 Oct 2021 17:51:19 +0800</pubDate><description><![CDATA[目录

一、用hello world作为例子

（1）创建所需的hello.c,hello.h,main.c程序

（2）生成.o文件

（3）利用.o文件创建.a静态库

（4）在程序中使用静态库

（5）创建.so动态库文件

（6）在程序中使用动态库



（7）静态库和动态库优先级

二、实例示范

 (1)程序编写

（2）生成静态库

（3）生成动态库

（4）静态库与动态库文件大小对比

三、总结

四、参考文献

一、用hello world作为例子

（1）创建所需的hell...]]></description><category></category></item></channel></rss>