<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Stephen_yu的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Stephen_yu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Stephen_yu]]></copyright><item><title><![CDATA[Keil MDK下如何设置非零初始化变量]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/128829535</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/128829535</guid><author>Stephen_yu</author><pubDate>Wed, 01 Feb 2023 11:16:43 +0800</pubDate><description><![CDATA[RAM]]></description><category></category></item><item><title><![CDATA[STM32F1 ADC DMA多路采集取平均防错位]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/127001096</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/127001096</guid><author>Stephen_yu</author><pubDate>Thu, 22 Sep 2022 22:17:24 +0800</pubDate><description><![CDATA[STM32F1 ADC DMA错位]]></description><category></category></item><item><title><![CDATA[Source Insight 3.5 代码注释和取消注释快捷键的设置]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/126526632</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/126526632</guid><author>Stephen_yu</author><pubDate>Thu, 25 Aug 2022 15:58:04 +0800</pubDate><description><![CDATA[source insight]]></description><category></category></item><item><title><![CDATA[谈谈Keil 中C51的内存分配与优化]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/126502486</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/126502486</guid><author>Stephen_yu</author><pubDate>Wed, 24 Aug 2022 13:10:04 +0800</pubDate><description><![CDATA[C51 ram分配]]></description><category></category></item><item><title><![CDATA[STM8的bootloader中断向量重定义]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/118787932</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/118787932</guid><author>Stephen_yu</author><pubDate>Fri, 16 Jul 2021 11:24:40 +0800</pubDate><description><![CDATA[网上看了很多例子，也不甚明白都是怎么解决的，下面把自己调试的过程记录一下



我也使用到了下面这种办法处理

__root const long reintvec[32]@".intvec"=
{
  0x82008080,0x8200a004,0x8200a008,0x8200a00c,
  0x8200a010,0x8200a014,0x8200a018,0x8200a01c,
  0x8200a020,0x8200a024,0x8200a028,0x8200a02c,   ...]]></description><category></category></item><item><title><![CDATA[Lin2.1通信协议入门解析_笔记]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/117396906</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/117396906</guid><author>Stephen_yu</author><pubDate>Sun, 30 May 2021 12:47:06 +0800</pubDate><description><![CDATA[概述
本文对Lin的特征，物理层，协议层和应用层进行说明。

1.Lin简介

1.1Lin通信节点主要有物理层，协议层，应用层三大部分。


]]></description><category></category></item><item><title><![CDATA[win10下建立linux编译环境]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/115679740</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/115679740</guid><author>Stephen_yu</author><pubDate>Tue, 13 Apr 2021 21:40:33 +0800</pubDate><description><![CDATA[1、打开windows控制面板

程序--&gt;程序和功能（启用或关闭windows功能），弹出框选中最下面的适用于linux的windows子系统，重启

2、在Microsoft Store搜Linux，选中ubuntu，下载安装

打开ubuntu系统

sudo apt update

sudo apt install build-essential



查看gcc --version是否安装成功

cd /mnt

使用ls可以看到下面挂着c、d、e、f的盘符

选择你想存放的盘或者目录

.]]></description><category></category></item><item><title><![CDATA[RT-Thread控制台串口号切换到uart2方法]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/115585984</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/115585984</guid><author>Stephen_yu</author><pubDate>Sat, 10 Apr 2021 22:59:49 +0800</pubDate><description><![CDATA[RT-Thread：4.0.3

由于默认的串口1使用起来不是很方便，研究下如何切换到串口2，记录如下

1、修改配置文件rtconfig.h

将

#define RT_CONSOLE_DEVICE_NAME "uart1"

改成

#define RT_CONSOLE_DEVICE_NAME "uart2"



注释掉下面一行

//#define BSP_USING_UART1

改成#define BSP_USING_UART2



2、修改stm32f4xx_hal_msp.c文件

..]]></description><category></category></item><item><title><![CDATA[探索者STM32F407不能复位]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/108855079</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/108855079</guid><author>Stephen_yu</author><pubDate>Mon, 28 Sep 2020 18:34:21 +0800</pubDate><description><![CDATA[购买的正点原子的探索者STM32F407的开发板，接上usb转串口的线到PC看打印

然后不管是软复位还是硬复位都失效

把usb转串口线拔下，用LED设置亮灭来识别复位成功，每次都能成功

后来看到正点原子的资料，里面有讲到推荐使用的一款串口助手，叫XCOM，用这个软件就不存在软硬件复位不成功的现象了



软件复位使用下面两行代码

__set_FAULTMASK(1); // 关闭所有中断

NVIC_SystemReset(); // 复位



在此做个记录，方便遇到同样问题的攻城狮查找问题
..]]></description><category></category></item><item><title><![CDATA[MODBUS-功能码详解]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/108854859</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/108854859</guid><author>Stephen_yu</author><pubDate>Mon, 28 Sep 2020 18:13:42 +0800</pubDate><description><![CDATA[转自https://blog.youkuaiyun.com/xiaoluoshan/article/details/73233955 







——————————————————————————————————————————————————————







————————————————————————————————————————————————————————






...]]></description><category></category></item><item><title><![CDATA[J1939协议之通俗易懂----简介]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/108503885</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/108503885</guid><author>Stephen_yu</author><pubDate>Wed, 09 Sep 2020 22:33:08 +0800</pubDate><description><![CDATA[J1939简介

J1939协议简介

J1939协议是由美国汽车工程师协会（SAE）(SAE协会简介)定义的一组标准。J1939标准用于卡车、公共汽车和移动液压等重型车辆。在许多方面，J1939标准类似于旧版J1708和J1587标准，但J1939标准协议建立在CAN（控制器区域网络，ISO11898）上。

物理层（J1939/11）描述了针对客车的电气接口。数据链路层描述了构建报文、访问总线以及诊断传送故障的规则。应用层(J1939/71和J1939/73）定义了在网络中传送的每条报文的具体数据。
.]]></description><category></category></item><item><title><![CDATA[KEAZ128 时钟配置]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/108488163</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/108488163</guid><author>Stephen_yu</author><pubDate>Wed, 09 Sep 2020 13:51:42 +0800</pubDate><description><![CDATA[本文介绍如何用KEAZ128评估版（FRDM-KEAZ128Q80）配置为40MHz core freqency/20MHz bus frequency。



1.了解器件时钟特性

参见NXP KEA128 DS（S9KEA128P80M48SF0.pdf)，可以知道这个MCU最高支持48MHz core frequency.



从KEA128 RM（KEA128RM (中文).pdf），可以知道KEA128各个时钟名称及频率等特性。这里需要注意，设置的配置内核时钟频率（40MHz）不能超过最...]]></description><category></category></item><item><title><![CDATA[STM32之CAN ---CAN ID过滤器分析]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/108230707</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/108230707</guid><author>Stephen_yu</author><pubDate>Tue, 25 Aug 2020 23:02:46 +0800</pubDate><description><![CDATA[1 前言

 在CAN协议里，报文的标识符不代表节点的地址，而是跟报文的内容相关的。因此，发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CAN ID)的值决定软件是否需要该报文；如果需要，就拷贝到SRAM里；如果不需要，报文就被丢弃且无需软件的干预。
 为满足这一需求，bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0)，以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销，否则就必须由软件过滤从而占用一定的CPU开销。...]]></description><category></category></item><item><title><![CDATA[STM32学习笔记：读写内部Flash（介绍+附代码）]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/105960888</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/105960888</guid><author>Stephen_yu</author><pubDate>Wed, 06 May 2020 22:17:56 +0800</pubDate><description><![CDATA[一、介绍

首先我们需要了解一个内存映射：



stm32的flash地址起始于0x0800 0000，结束地址是0x0800 0000加上芯片实际的flash大小，不同的芯片flash大小不同。

RAM起始地址是0x2000 0000，结束地址是0x2000 0000加上芯片的RAM大小。不同的芯片RAM也不同。

Flash中的内容一般用来存储代码和一些定义为const的数据，断电不丢失...]]></description><category></category></item><item><title><![CDATA[STM32中GPIO的8种工作模式]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/105220881</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/105220881</guid><author>Stephen_yu</author><pubDate>Tue, 31 Mar 2020 13:43:39 +0800</pubDate><description><![CDATA[有关推挽输出、开漏输出、复用开漏输出、复用推挽输出

以及上拉输入、下拉输入、浮空输入、模拟输入的区别

转载自：http://bbs.ednchina.com/BLOG_ARTICLE_2082651.HTM



最近在看数据手册的时候，发现在Cortex-M3里，对于GPIO的配置种类有8种之多：

（1）GPIO_Mode_AIN模拟输入
（2）GPIO_Mode_IN_FLOATI...]]></description><category></category></item><item><title><![CDATA[Linux编程之UDP SOCKET全攻略]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/102901052</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/102901052</guid><author>Stephen_yu</author><pubDate>Mon, 04 Nov 2019 17:26:45 +0800</pubDate><description><![CDATA[这篇文章将对linux下udp socket编程重要知识点进行总结，无论是开发人员应知应会的，还是说udp socket的一些偏僻知识点，本文都会讲到。尽可能做到，读了一篇文章之后，大家对udp socket有一个比较全面的认识。本文分为两个专题，第一个是常用的upd socket框架，第二个是一些udp socket并不常用但又相当重要的知识点。



一、基本的udp socket编程

1...]]></description><category></category></item><item><title><![CDATA[ucosIII 消息队列使用注意事项]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/102732238</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/102732238</guid><author>Stephen_yu</author><pubDate>Thu, 24 Oct 2019 21:19:17 +0800</pubDate><description><![CDATA[最近在调试ucosIII的消息队列，发现一些需要注意的地方。



1、当消息挂起队列中无任务被挂起时，被提交的消息会存储在消息存储队列中直到该队列所允许的上限后，被提交的消息将不能再存储进该消息存储队列中，此时，欲提交该消息的函数会返回相应的错误代号以告知用户该消息队列存储消息已满，该消息将溢出。





2、ucos的消息队列发送时不会进行数据拷贝，只是发送指针。所以只能分别建立发送和...]]></description><category></category></item><item><title><![CDATA[ucosIII信号量创建]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/102615797</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/102615797</guid><author>Stephen_yu</author><pubDate>Thu, 17 Oct 2019 21:51:22 +0800</pubDate><description><![CDATA[今天看了下UCOSIII的信号量，说什么分二值信号量和计数信号量，网上也有不少例子，感觉说法都不是太准确，我验证了一下，感觉应该这样理解，创建信号量函数原型如下：

void OSSemCreate (OS_SEM   *p_sem,
         CPU_CHAR  *p_name,
         OS_SEM_CTR  cnt,
...]]></description><category></category></item><item><title><![CDATA[__attribute__((packed))详解]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/100902821</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/100902821</guid><author>Stephen_yu</author><pubDate>Mon, 16 Sep 2019 21:38:50 +0800</pubDate><description><![CDATA[1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐，是GCC特有的语法。这个功能是跟操作系统没关系，跟编译器有关，gcc编译器不是紧凑模式的，我在windows下，用vc的编译器也不是紧凑的，用tc的编译器就是紧凑的。例如：

在TC下：struct my{ char ch; int a;} sizeof(int)...]]></description><category></category></item><item><title><![CDATA[二值信号量和互斥锁到底有什么区别？]]></title><link>https://blog.youkuaiyun.com/Stephen_yu/article/details/96135983</link><guid>https://blog.youkuaiyun.com/Stephen_yu/article/details/96135983</guid><author>Stephen_yu</author><pubDate>Tue, 16 Jul 2019 14:52:33 +0800</pubDate><description><![CDATA[原文链接：https://www.cnblogs.com/codescrew/p/8970514.html

在说明之前我先抛出结论：互斥锁和二值信号量在使用上非常相似，但是互斥锁解决了优先级翻转的问题





假定我们现在有三个任务，task1，task2，task3，任务优先级task1最高，然后依次降低。我们知道在系统调度的时候当两个任务同时处于就绪态的时候，系统会优先执行优先级高的任...]]></description><category></category></item></channel></rss>