08 2018 档案
浅析inline函数
摘要:说说inline函数吧,它是一个直接定义的函数,没有声明(不能声明一个inline函数)。 思考一个问题--它的作用是什么? 为解决频繁的函数调用所造成的栈空间的大量开销,引入inline修饰符,可表内联函数。 函数调用时会为函数的参数开辟栈空间,但用完会释放掉,所以参数不会造成空间滥用,真正造成滥 阅读全文
posted @ 2018-08-23 14:18 lzd626 阅读(183) 评论(0) 推荐(0) 编辑
ucosiii浅析内核对象-软件定时器
摘要:内核对象和各种内核机制的函数接口都在os.h里声明,实现在各自的.c文件,比如os_tmr.c和os_time.c。 C语言全局变量一般会默认初始化;局部变量如若不初始化,会分配垃圾数据的;建议使用时都手动初始化。 其实使用内核对象时,就类似与使用任务,只不过在创建对象之前,要先声明一个内核对象。 阅读全文
posted @ 2018-08-17 22:09 lzd626 阅读(1337) 评论(0) 推荐(0) 编辑
stm32-SPI通讯原理详解
摘要:那么今天再说说SPI吧,通过前面的IIC其实我们知道,通讯协议,其实就是通过时序来传输数据,通过自定义不同的函数来实现数据的传输(具体就是按照时序,来读写寄存器的标志位,来完成数据传输的具体操作),所以可以通过再定义不同的函数来读写相应存储传输数据的存储空间,以完成对数据的处理,那我们前面提到的II 阅读全文
posted @ 2018-08-16 22:34 lzd626 阅读(3248) 评论(0) 推荐(0) 编辑
stm32-详解IIC通讯协议
摘要:通讯的起始与停止位 当时钟线是高电平时,数据线从高电平切换为低电平时,表示通讯开始(S信号)。 当时钟线时高电平时,数据线从低电平切换为高电平时,表示通讯停止(P信号)。 S和P信号都有主机产生。 数据的有效性 SDA在SCL的每个时钟周期传输一位数据,且SCL在周期内的高电平时SDA有效,SCL低 阅读全文
posted @ 2018-08-14 15:50 lzd626 阅读(2140) 评论(0) 推荐(0) 编辑
stm32-几个小体会
摘要:这篇就是单纯的复习复习。当然只是单谈程序设计思路,细节见代码;下面开始看看自己干了什么?又做了什么思考? 那么今天的小体会就先这里。。。 阅读全文
posted @ 2018-08-12 22:19 lzd626 阅读(148) 评论(0) 推荐(0) 编辑
结构体内存对齐的原则及原理
摘要:结构体是C语言的一大特色,今天就来思考两个问题。 它的成员的顺序排列有什么要求吗? 原则一:结构的首变量地址偏移量offset为0,之后每个变量的首地址都要是其本身宽度的整数倍。总size=(0+1)+(3+4)+(0+8)=16。 原则二:结构体的大小一定是最大成员宽度的整数倍,依照原则1,总si 阅读全文
posted @ 2018-08-11 11:35 lzd626 阅读(369) 评论(0) 推荐(0) 编辑
ucosiii几个常用的时间管理函数
摘要:昨天我们说了系统节拍,经过一步步的分析,了解了任务运行的基础,是怎么来的。今天就继续谈谈“时间管理”这个话题,系统节拍驱动任务的运行,时间管理就是对任务的运行时间进行管理的一种内核机制。那么下面就简单介绍几个常用的时间管理函数。 1.OSTimeDly函数,它位于os_time.c文件中,这个文件还 阅读全文
posted @ 2018-08-10 21:44 lzd626 阅读(629) 评论(0) 推荐(0) 编辑
usosiii时钟节拍
摘要:在APP组里的os_cfg_app.h文件可以设置系统时钟SysTick的时钟节拍频率(还可以设置它的任务优先级,任务栈大小,时间片数组大小),一般使用1000Hz,也就是节拍周期为1ms。 下面我们看看它的配置步骤的关键代码,BSP_CPU_ClkFreq()函数内部其实调用的rcc的库函数来获取 阅读全文
posted @ 2018-08-09 20:19 lzd626 阅读(615) 评论(0) 推荐(0) 编辑
ucosiii多任务之使用3个LED
摘要:昨天说到了移植ucos,并且完成了移植过程,其实都是依葫芦画瓢,今天我们来尝试尝试它的多任务,目标是创建三个led任务,还是按照手册上的教程一步一步来敲一下代码,先熟悉以下步骤,然后再思考为什么要这么做? 1.在app_cfg.h里,定义三个led任务的优先级和栈空间大小 ************* 阅读全文
posted @ 2018-08-08 21:10 lzd626 阅读(1221) 评论(1) 推荐(0) 编辑
ucosiii移植到stm32的几个小步骤
摘要:下面就开始移植到ucosiii到自己的板子上了。 3.打开项目,添加组,将相关文件再添加到相关组。 4.对功能进行裁剪(失能一些未使用到的宏,删减一些还没用到的函数)。 其实就是照着别人的手册,就是上面说到的开发指南,本人动手的时候会遇到一些小问题,稍加思考和查找资料就能轻易解决,这次就是操作一遍以 阅读全文
posted @ 2018-08-07 20:17 lzd626 阅读(1512) 评论(0) 推荐(0) 编辑
ucosiii文件结构及内核对象概念
摘要:ucosiii的定义:可升级,可固化的,基于优先级的实时内核。 下面先来看看ucosiii的文件结构图:这个图从下至上就是从底层到上层的一个结构,总的来说就是三层:CPU的配置与移植,内核服务,功能裁剪及应用任务。当然这个图是盗的秉火对应手册里的。既然别人做了这么好的总结,我们就多看看。 下面我们就 阅读全文
posted @ 2018-08-07 11:01 lzd626 阅读(478) 评论(0) 推荐(0) 编辑
stm32-浅析标准库设计思想
摘要:标题写的高大上,其实内容简单清晰。今天就来看看,你写的C程序是怎么调用库函数来完成对寄存器的操作,如果你一清二楚,扫一眼下面的内容即可,如若不然,还是老老实实看下去吧,相信对你会有一点点帮助的。单就GPIOB这个外设来谈谈,你可以找任一一个外设来按照下面的顺序看。 一.程序目标:使红灯亮 二.程序设 阅读全文
posted @ 2018-08-05 16:27 lzd626 阅读(843) 评论(0) 推荐(0) 编辑
C指针概念
摘要:指针:指针其实就是特殊的变量。 变量是什么? 那我们先来看看普通的变量(int a=0;),我们翻译一下这段代码的意思:在存储空间开辟一块整型数据的空间,它存储的值是0;这段空间的名字取作a;(当然a只是C程序的识记符号,编译之后变量名就会转换成相应的地址)。 特殊是什么意思? Int *p=1;特 阅读全文
posted @ 2018-08-03 16:25 lzd626 阅读(136) 评论(0) 推荐(0) 编辑
stm32-程序启动及编译过程(MDK)
摘要:当rebulid工程之后,在bulid output界面会依次出现,编译器的信息;工程名字;编译的程序的名字;linking;程序的所占存储空间的大小;生成16进制文件;警告和错误提示。 下面重点说说程序存储的问题。 CM-3内核在reset之后。 1. 会在0x00000000处取出栈指针MSP的 阅读全文
posted @ 2018-08-02 16:59 lzd626 阅读(635) 评论(0) 推荐(0) 编辑
stm32-浅谈DAC
摘要:在数字信号系统中,大部分传感器信号会被转换成电压信号,经由ADC转换成易于计算机存储,处理的数字编码,由计算机处理之后,DAC输出电压模拟信号以驱动器件,例如音频信号的采集和还原。 Stm32的DAC外设的数字输入信号的分辨率可为8位或12位,具有两个输出通道,每个通道都可以使用DMA,DAC能出错 阅读全文
posted @ 2018-08-01 11:30 lzd626 阅读(1065) 评论(0) 推荐(0) 编辑




点击右上角即可分享
微信分享提示