<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[afddasfa的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/afddasfa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; afddasfa]]></copyright><item><title><![CDATA[Eplan自学笔记]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/154426061</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/154426061</guid><author>afddasfa</author><pubDate>Sat, 22 Nov 2025 17:33:01 +0800</pubDate><description><![CDATA[跳完线后的效果图如下：
注：中断点是成对出现的

有些部件如西门子的可以去西门子官网下载
新建自己的部件


部件管理]]></description><category></category></item><item><title><![CDATA[西门子840d sl数控机床学习笔记（持续更新中。。。）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/151998813</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/151998813</guid><author>afddasfa</author><pubDate>Tue, 23 Sep 2025 19:48:28 +0800</pubDate><description><![CDATA[A 与指令：检查被寻址位的信号状态是否为1，并将测试结果与逻辑运算结果(RLO：上条程序运算结果)进行与运算。2.1、 STL 与LAD转换：A串联，O并联，（）先运算，=是输出，遇见不认识的符合点F1帮助。AN 与非指令：检测被寻址位信号状态是否为0，并将测试结果与逻辑运算结果(RLO)进行与运算。ON 或非指令：检测被寻址位信号状态是否为0，并将测试结果与逻辑运算结果(RLO)进行或运算。O 或指令：检测被寻址位信号状态是否为1，并将测试结果与逻辑运算结果(RLO)进行或运算。]]></description><category></category></item><item><title><![CDATA[FreeRTOS学习笔记（二）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/134296661</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/134296661</guid><author>afddasfa</author><pubDate>Thu, 09 Nov 2023 19:44:21 +0800</pubDate><description><![CDATA[获取任务运行时间函数代码/* 任务二，实现任务运行时间统计API函数的使用 */while(1)任务查询函数使用例程/* 任务二，实现任务状态查询API函数使用 */printf("task2任务优先级为%ld\r\n",priority_num);printf("任务数量：%ld\r\n",task_num);printf("任务名\t\t任务优先级\t任务编号\r\n");for(i = 0;i++)]]></description><category></category></item><item><title><![CDATA[FreeRTOS学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/133046869</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/133046869</guid><author>afddasfa</author><pubDate>Mon, 09 Oct 2023 21:44:50 +0800</pubDate><description><![CDATA[vtaskdelay函数会开启中断，所以在临界区不能用vtaskdelay2.1、任务的动态创建与删除


如果在中断中用恢复函数需要在函数后带FromISR后缀，vTaskResumeFromISR（）系统所管理的优先级范围：5~15，也就是说优先级在0-4以内的中断freertos不能控制它们。5.1、临界代码段什么是临界段：临界段代码也叫做临界区，是指那些必须完整运行，不能被打断的代码段，如：iic、spi的初始化等。
5.2、任务调度器的挂起与恢复

1、与临界区不一样的是，挂起任务调度器，未关闭中]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（七）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132981137</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132981137</guid><author>afddasfa</author><pubDate>Mon, 18 Sep 2023 16:16:10 +0800</pubDate><description><![CDATA[读I2C数据时，要先发出设备地址，这是写操作，然后再发起读操作，涉及写、读操作。vmware使用桥接，或者不使用vmware而是直接使用服务器：假设Ubuntu IP为192.168.1.137。这函数完全有驱动程序来驱动：启动传输后，就等待；在中断服务程序里传输下一个数据，知道传输完毕。在Ubuntu的IMX6ULL内核目录下执行如下命令,，上机实验时需要配置内核、编译I2C-GPIO驱动。在IMX6ULL内核源码目录下执行。开发板上挂载NFS文件系统。STM32MP157：函数。IMX6ULL：函数。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（六）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132889684</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132889684</guid><author>afddasfa</author><pubDate>Thu, 14 Sep 2023 20:34:20 +0800</pubDate><description><![CDATA[I2C在硬件上的接法如下所示，主控芯片引出两条线SCL,SDA线，在一条I2C总线上可以接很多I2C设备，我们还会放一个上拉电阻（放一个上拉电阻的原因以后我们再说）。主芯片通过一根SDA线既可以把数据发给从设备，也可以从SDA上读取数据，连接SDA线的引脚里面必然有两个引脚（发送引脚/接受引脚）。当SCL为低电平时候，大家都不应该使用IIC总线，只有当SCL从低电平变为高电平的时候，IIC总线才能被使用。当它就绪后，就可以不再驱动三极管，这是上拉电阻把SCL变为高电平，其他设备就可以继续使用I2C总线了。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（五）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132883561</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132883561</guid><author>afddasfa</author><pubDate>Thu, 14 Sep 2023 19:50:21 +0800</pubDate><description><![CDATA[方法3(不推荐)：由i2c_driver.detect函数来判断是否有对应的I2C设备并生成i2c_client。i2c_driver跟i2c_client匹配成功后，就调用i2c_driver.probe函数。有时候无法知道该设备挂载哪个I2C bus下，无法知道它对应的I2C bus number。注册：i2c_add_adapter/i2c_add_numbered_adapter。调试时、或者不方便通过代码明确地生成i2c_client时，可以通过用户空间来生成。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（四）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132868893</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132868893</guid><author>afddasfa</author><pubDate>Thu, 14 Sep 2023 16:36:02 +0800</pubDate><description><![CDATA[参考资料：从芯片手册上可以知道，AT24C02的设备地址跟它的A2、A1、A0引脚有关：
打开I2C模块的原理图(这2个文件是一样的)：可以读1个字节，也可以连续读出多个字节。
连续读多个字节时，芯片内部的地址会自动累加。
当地址到达存储空间最后一个地址时，会从0开始。

4. 编译
4.1 在Ubuntu设置交叉编译工具链


STM32MP157


IMX6ULL


4.2 使用I2C-Tools的源码
为IMX6ULL编译时，有如下错误：

这是因为IMX6ULL的工具链自带的include目录中]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（三）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132864574</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132864574</guid><author>afddasfa</author><pubDate>Wed, 13 Sep 2023 21:27:50 +0800</pubDate><description><![CDATA[参考资料：APP访问硬件肯定是需要驱动程序的，
对于I2C设备，内核提供了驱动程序，通过它可以直接使用下面的I2C控制器驱动程序来访问I2C设备。
框架如下：

i2c-tools是一套好用的工具，也是一套示例代码。使用一句话概括I2C传输：APP通过I2C Controller与I2C Device传输数据。
所以使用I2C-Tools时也需要指定：

IMX6ULL



修改I2C-Tools的Makefile指定交叉编译工具链


在Makefile中，“?=”在第一次设置变量时才会起效果，如果之前]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（二）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132863727</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132863727</guid><author>afddasfa</author><pubDate>Wed, 13 Sep 2023 20:22:16 +0800</pubDate><description><![CDATA[举例：设备地址为0x50的EEPROM，要读取它里面存储地址为0x10的一个字节，应该构造几个i2c_msg？i2c_msg中的flags用来表示传输方向：bit 0等于I2C_M_RD表示读，bit 0等于0表示写。使用一句话概括I2C传输：APP通过I2C Controller与I2C Device传输数据。使用i2c_adapter表示一个I2C BUS，或称为I2C Controller。在上面的i2c_algorithm结构体中可以看到要传输的数据被称为：i2c_msg。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（I2C专题）（一）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132862694</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132862694</guid><author>afddasfa</author><pubDate>Wed, 13 Sep 2023 19:52:30 +0800</pubDate><description><![CDATA[I2C协议中数据传输的单位是字节，也就是8位。I2C-tools中的函数：i2c_smbus_write_i2c_block_data()。I2C-tools中的函数：i2c_smbus_read_i2c_block_data()。I2C-tools中的函数：i2c_smbus_write_block_data()。I2C-tools中的函数：i2c_smbus_write_byte_data()。I2C-tools中的函数：i2c_smbus_write_word_data()。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（同步与互斥专题）（二）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132760929</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132760929</guid><author>afddasfa</author><pubDate>Fri, 08 Sep 2023 20:28:04 +0800</pubDate><description><![CDATA[对于ARMv6及以上的架构，使用include/asm-generic/mutex-dec.h中的__mutex_fastpath_lock函数。对于ARMv6及以上的架构，使用include/asm-generic/mutex-dec.h中的__mutex_fastpath_lock函数。如果mutex的值加1后还是小于等于0，就表示有人在等待mutex，需要去wait_list把它取出唤醒，这需要用到slowpath的函数：__mutex_unlock_slowpath。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（同步与互斥专题）（一）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132746037</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132746037</guid><author>afddasfa</author><pubDate>Fri, 08 Sep 2023 14:41:13 +0800</pubDate><description><![CDATA[在ARMv6以下的架构里，不支持SMP系统，关中断。在ARMv6及以上的架构中，不需要关中断，有ldrex、strex等指令。Linux内核提供了很多类型的锁，它们可以分为两类：① 自旋锁(spinning lock)；② 睡眠锁(sleeping lock)。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（LCD屏幕专题）（四）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132737847</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132737847</guid><author>afddasfa</author><pubDate>Thu, 07 Sep 2023 15:33:07 +0800</pubDate><description><![CDATA[即使APP速度很高，LCD控制器不断从Framebuffer中读取数据来显示，而APP不断把数据写入Framebuffer。上述两个缺点的根源是一致的：Framebuffer中的数据还没准备好整帧数据，就被LCD控制器使用了。APP：等待切换完成(在驱动程序中已经等待切换完成了，所以这个调用并无必要)APP：读取buffer信息。APP：开始切换buffer。驱动：分配多个buffer。驱动：保存buffer信息。APP：使能多buffer。APP：写buffer。驱动：切换buffer。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（LCD屏幕专题）（三）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132737012</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132737012</guid><author>afddasfa</author><pubDate>Thu, 07 Sep 2023 14:43:35 +0800</pubDate><description><![CDATA[vmware使用桥接，或者不使用vmware而是直接使用服务器：假设Ubuntu IP为192.168.1.137。vmware使用NAT(假设windowsIP为192.168.1.100)上机测试：使用编译出来的内核、设备树启动板子。现象：LCD上没有企鹅LOGO，在终端中执行。加入我们编写的驱动程序、设备树文件。去除内核自带的驱动程序。重新编译内核、设备树。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（LCD屏幕专题）（二）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132722952</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132722952</guid><author>afddasfa</author><pubDate>Thu, 07 Sep 2023 10:05:17 +0800</pubDate><description><![CDATA[文件：drivers\video\of_display_timing.c。文件：drivers\video\of_display_timing.c。文件：drivers\video\fbdev\core\modedb.c。文件：drivers\video\fbdev\core\fbmon.c。文件：drivers\video\fbdev\mxsfb.c。文件：drivers\video\videomode.c。文件：drivers\video\videomode.c。代码：clock-frequency。]]></description><category></category></item><item><title><![CDATA[嵌入式Linux驱动开发（LCD屏幕专题）（一）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132717664</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132717664</guid><author>afddasfa</author><pubDate>Wed, 06 Sep 2023 17:59:43 +0800</pubDate><description><![CDATA[总的分辨率是 yres*xres。]]></description><category></category></item><item><title><![CDATA[手写嵌入式操作系统（基于stm8单片机）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/132621788</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/132621788</guid><author>afddasfa</author><pubDate>Fri, 01 Sep 2023 12:51:13 +0800</pubDate><description><![CDATA[【代码】嵌入式操作系统基础（基于stm8单片机）]]></description><category></category></item><item><title><![CDATA[Linux(驱动编程)（调试技术）（imx6ull）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/130767848</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/130767848</guid><author>afddasfa</author><pubDate>Wed, 12 Jul 2023 10:33:46 +0800</pubDate><description><![CDATA[查看次函数在那个.c里用过，然后在vscode界面下按alt+p搜索这个.c就可以参考这个.c的头文件。7、驱动程序执行printk函数时会关闭一段时间中断，调有些程序时尽量不要加printk。8、驱动函数xxx_init（）的返回值（return）一定要有数值不然加载驱动会有问题。（1）配置pcie驱动（详情见手册EMC拨号指南_linux）4、 输入指令可查看各个中断发生的次数及申请情况。命令看看是否检测到网卡，如没检测到重新启动开发板。6、输入下面命令可打开内核调试信息。2、编译完驱动跟应用后先。]]></description><category></category></item><item><title><![CDATA[蓝桥杯国赛备赛（嵌入式组）]]></title><link>https://blog.youkuaiyun.com/afddasfa/article/details/130995400</link><guid>https://blog.youkuaiyun.com/afddasfa/article/details/130995400</guid><author>afddasfa</author><pubDate>Thu, 01 Jun 2023 22:36:51 +0800</pubDate><description><![CDATA[（4）测试HAL_ADC_Start的ADC启动函数和HAL_ADC_GetValue的ADC读取函数。（4）根据595芯片工作原理，编写seg_display函数（先发送高位）PA3  :RCLK  串型存储时钟输入	（上升沿有效）PA2	 :SCK	串行移位时钟输入（上升沿有效）（2）配置PA4为ADC采集模式，并设置单端模式。（2）配置PA1、PA2、PA3为推挽输出。（4）测试ADC采集和GPIO读取功能。（3）配置PA3为gpio输入模式。（1）拓展板跳线帽连接（如下图）1.1、共阴数码管码表。]]></description><category></category></item></channel></rss>