编程浪子的博客

碌碌无为终为过

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年7月2日

摘要: uTenux的消息缓冲区是一个通过传递大小可变的消息来实现同步和通信的对象。 消息缓冲区由三部分组成:1、待发消息队列 2、等接收消息的任务队列 3、用来保存缓冲消息的空间。 和信号相比,消息队列能够传递更多的信息。与管道相比,消息队列提供了有格式的数据,这可以减少开发人员的工作量。但消息队列仍然有大小限制。 在uTenux中当缓冲区空时,接收消息的任务进入等待状态。当缓冲区满时,发送消息的任务进... 阅读全文
posted @ 2013-07-02 12:29 编程浪子_ 阅读(1755) 评论(0) 推荐(0) 编辑

2013年7月1日

摘要: 互斥体,维基百科中交互斥锁。其定义是这样的:互斥锁(英语:英语:Mutual exclusion,缩写 Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行访问的代码,并非一种机制或是算法。一个程序、进程、线程可以拥有多个临界区域,但是并... 阅读全文
posted @ 2013-07-01 20:50 编程浪子_ 阅读(821) 评论(0) 推荐(0) 编辑

2013年6月30日

摘要: 邮箱是一个通过在系统(共享)内存空间传递消息来实现同步和通信的对象。uTenux中每个邮箱都包含一个用来发送消息的消息队列和一个用于等待接收消息的任务队列,其使用邮箱功能的消息内容放置在发送方和接收方共享的内存中,因此,实际发送和接收的只有位于这片共享空间的消息起始地址。消息的内容本身并不复制。 消息邮箱的API包括创建删除发送接收删除的功能。 1、使用tk_cre_mbx创建一个消息邮... 阅读全文
posted @ 2013-06-30 16:47 编程浪子_ 阅读(864) 评论(0) 推荐(0) 编辑

摘要: 事件标志是一个用来实现同步的对象,由多个位组成,用作指示对应事件存在的标志。事件标志由用来指示对应事件存在的位模式(bitpattern)和一个等待事件标志的任务队列组成。 uTenux提供了一组API用于处理事件标志:创建、删除、设置、等待、清除。 1、创建事件标志:tk_cre_flg 为建立的事件标志分配一个控制块 事件结构体: typedef struct t_cflg {... 阅读全文
posted @ 2013-06-30 11:36 编程浪子_ 阅读(1321) 评论(0) 推荐(0) 编辑

摘要: 信号量(semaphore)是一个用来指示可用的资源并将可用资源的数量以数值的形式表示出来的对象。当使用一组资源时,信号量用来实现互斥控制和同步。uTenux提供了信号量出来的API,可以很方便地使用信号量。 uTenux中,信号量包含一个资源计数(用来指示是否存在相应的资源以及资源的数量)和一个等待信号量的任务队列。 当一个任务返回m个资源时,信号量资源计数加m。当一个任务获得n个资源时,信... 阅读全文
posted @ 2013-06-30 01:37 编程浪子_ 阅读(1397) 评论(0) 推荐(0) 编辑

2013年6月29日

摘要: 任务就是一个无限循环。uTenux提供的任务管理功能是很强大的,包括建立和删除一个任务,启动或退出任务,取消一个任务的启动请求,改变任务的优先级和査询任务状态,使任务进人睡眠状态和唤醒状态,取消唤醒请求,强制释放任务等待状态,使任务状态变成挂起状态、延迟调用任务的执行和禁止任务等待状态。 任务是一个通过ID来识别的对象,每个任务都有基础优先级和当前优先级,可用来控制任务的执行次序 任务管理的... 阅读全文
posted @ 2013-06-29 09:48 编程浪子_ 阅读(1485) 评论(0) 推荐(0) 编辑

2013年6月28日

摘要: 1、使用的uTenux内核代码:http://www.uloong.cc/cn/download/uTenux_V1.6.00r180.zip 2、uTenux的特性: 1、微内核 2、开放源码、完全免费 3、不需要MMU,占用ROM/RAM少 4、可移植、可固化、可裁剪 5、抢占式实时多任务操作系统 6、支持所有32位ARM7/9和Cortex M系列的微控制器 7、可配置任意多个的任务、任务... 阅读全文
posted @ 2013-06-28 21:53 编程浪子_ 阅读(2130) 评论(4) 推荐(1) 编辑

摘要: 嵌入式操作系统uTenux实验汇总贴 阅读全文
posted @ 2013-06-28 21:32 编程浪子_ 阅读(1481) 评论(0) 推荐(0) 编辑

2013年6月4日

摘要: 在输入捕获模式下,当检测到ICx信号上升/下降边沿时,计数器的当前值被存储在捕获比较寄存器TIMx_CCRx中。 当捕获事件发生时,相应的CCxIF 标志(TIMx_SR 寄存器) 被置1。如果中断或者DMA功能被使能,就会产生中断或者DMA请求。如果捕获发生时,CCxIF标志已经被置位,这时过采样标志CCxOF就会被置位。向CCxIF写0或者读去TIM_CCRx中的数据,将清除捕获标志。CCxO... 阅读全文
posted @ 2013-06-04 18:06 编程浪子_ 阅读(20118) 评论(1) 推荐(0) 编辑

2013年5月31日

摘要: 在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的 stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。 所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_para... 阅读全文
posted @ 2013-05-31 23:25 编程浪子_ 阅读(522) 评论(0) 推荐(0) 编辑

摘要: 高级时钟控制定时器TIM1&TIM8简介: STM32F4的高级控制定时器包含一个自动重装载计数器,计数器的输入是一个被预分频的系统时钟。 这个定时器有多种用途,包括车辆输入信号长度(输入捕获模式)或者产生波形输出(输出捕获,PWM,带死区插入的互补PWM输出等) 脉冲长度和波形周期可在通过定时器的预分频器或者RCC的预分频器在几个微秒时钟内调整。 高级控制定时器和通用定时器完全独立,不共享任何资... 阅读全文
posted @ 2013-05-31 22:40 编程浪子_ 阅读(25674) 评论(8) 推荐(2) 编辑

摘要: F4的RTC与F1的RTC有很大的差别。F1系列的RTC就是一个简单的计数器,要想获得时间,得自己计算。F4的就不需要这么麻烦了,读出来的直接就是时间 阅读全文
posted @ 2013-05-31 19:51 编程浪子_ 阅读(11092) 评论(0) 推荐(0) 编辑

2013年5月29日

摘要: STM32F4的随机数发生器RNG,以环境噪声为种子,产生32位随机数供主机使用。 阅读全文
posted @ 2013-05-29 16:45 编程浪子_ 阅读(6700) 评论(0) 推荐(0) 编辑

摘要: STM32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一时产生看门狗复位:1)当计数器的数值从0x40减到0x3F时2)当刷新看门狗时计数器的数值大于某一设定数值时,此设定数值在WWDG_CFR寄存器定义对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了某些 阅读全文
posted @ 2013-05-29 11:11 编程浪子_ 阅读(2051) 评论(0) 推荐(0) 编辑

摘要: 窗口看门狗(WWDG)用于发现由外部接口或者不可预期的逻辑操作导致的软件故障。这些故障会导致程序中断正常运行。当一个程序周期结束时,看门狗电路会产生一个MCU复位信号,除非在看门狗电路复位之前程序返回正常运行逻辑。当计数器减少到预设值的时候,也会产生一个复位信号。这就意味着计数器必须限制在一个指定的窗口内。 【窗口看门狗主要特性】 1、可编程向下计数器 2、复位条件:计数器值小于0x40或者计数器... 阅读全文
posted @ 2013-05-29 11:07 编程浪子_ 阅读(5684) 评论(0) 推荐(0) 编辑

2013年5月28日

摘要: 为了提搞系统的可靠性,STM32F4系列MCU有一个独立看门狗(IWDG)和一个窗口看门狗(WWDG)。今天做的实验是关于独立看门狗的。 独立看门狗使用的时钟源是内部低速振荡器LSI。因为LSE可能没接,HSE可能坏点,HSE耗着的时候HSI却观点了。。。诸多原因,LSI是最好的独立看门狗时钟。 【IWDG主要特性】 1、独立的向下计数器 2、内部RC振荡器作为时钟源 3、当计数器值减到0时,复位... 阅读全文
posted @ 2013-05-28 16:42 编程浪子_ 阅读(8939) 评论(0) 推荐(0) 编辑

摘要: STM32F4的DAC是一个12位,电压输出的DAC。可被配置为12位或者8位,也能和DMA联合使用。DAC具有两个独立转换通道。在双DAC模式下,DA抓换可被配置成独立模式或者同步工作模式。两路DAC参考电压以及ADC都是VREF。 【主要特性】 1、两路 2、12bit时数据可被配置成左对齐或右对齐 3、具有同步更新能力 4、噪声产生 5、三角波产生 6、两个通道独立转换或同步转换 7、每个通... 阅读全文
posted @ 2013-05-28 12:05 编程浪子_ 阅读(12857) 评论(0) 推荐(0) 编辑

2013年5月26日

摘要: 【实验目的】 输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。 【实验内容】 输出7路PWM信号,并用示波器测量输出。 【实验原理】 1、时基单元初始化 TIM1和TIM8使用内部时钟时,时钟由APB2提供。但是定时器的时钟并不是直接由APB2提供,而是来自于输入为APB2的一个倍频器。当APB2的与分频系数为1... 阅读全文
posted @ 2013-05-26 21:12 编程浪子_ 阅读(39452) 评论(3) 推荐(1) 编辑

2013年5月25日

摘要: ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。 当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。捕获这个中断,可以做出一些应对措施。 数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据与... 阅读全文
posted @ 2013-05-25 14:01 编程浪子_ 阅读(5867) 评论(0) 推荐(1) 编辑

2013年5月24日

摘要: 虽然一直ST用库做实验,但没有进行认真的总结。总是先添加价格文件,然后编译。能通过就完成,通不过就再添加别的文件。今天就一步步来梳理下建立用库工程的步骤。争取做到傻瓜式,让即使完全没用过MDK的人都能使用。 第一步:到ST下载标准外设库和演示工程,也可以问卖你开发板的人要。我的库文件是淘宝商给的。可以通过我的百度网盘下载,地址: 【http://pan.baidu.com/share/li... 阅读全文
posted @ 2013-05-24 22:48 编程浪子_ 阅读(11098) 评论(0) 推荐(0) 编辑