分享个自己用的STM32F10x工具库

来源:互联网 发布:数控铣床自动编程软件 编辑:程序博客网 时间:2024/06/02 05:02
Naisu_Tools库目前包含一个粗略的时间触发的调度器、GPIO口设置函数、串口使用工具,这只是为了方便我自己而写的一点东西,多有不足还望指出。在需要使用Naisu_Tools库的地方引用#include"Naisu_Tools.h"即可只用其中所有工具。Naisu_Tools.h中可以配置各工具相关参数,各工具功能与用法如下:
 

1)   GPIO口设置函数


该函数可以用来初始化GPIO口,见下例:



其中各项参数的填写与ST的库函数相同,输出时速度我设置的是50M。
其实就是就对本来的库函数又加了层封装。
 
2)   串口使用工具


该函数可以通过串口发送一串连续数据,数据以先进先出队列方式发送,可以短时间内添加多条发送信息,底层会自动完成一条接一条发送,每条消息发送中间间隔4ms,示例如下:


-----------------------------------------


该函数设置串口能响应的接收到的指令,指令格式定义如下:



该函数使用示例如下:



通过该方式加入的函数被触发时会在USART接收空闲中断中执行,所以被添加的函数执行时间不能太长。指令头和类型是指令检索的依据,对于同一个串口而言“指令头| 类型”不能重复,如果出现重复的情况,串口只会相应第一次添加的指令。
-----------------------------------------

本库中共写了USART1、USART2、USART3的相关方法,三个串口相互独立,如下:



-----------------------------------------
在第一次使用串口数据发送或指令添加函数时会初始化对应的串口。
     

3)   粗略的时间触发的调度器



可以添加一定时间后执行或间歇性执行的任务,示例如下:



第23行添加了一个立即执行,并且第一次执行后间隔100ms执行一次的任务Task1;
第24行添加了一个30ms后执行,并且第一次执行后间隔100ms执行一次的任务Task1;
第23、24两行其实就从PA4管脚输出了一个周期为100ms,占空比为30%的方波信号。
第25行添加的一个任务,并将任务索引号赋值给TT;
第26行添加了一个任务,该任务于10,000ms后执行,并且只执行1次,该任务的内容为在第16行,即删除任务队列中的于第25行所创建的周期性任务。
以上就是该块的主要功能 ,另外还有任务暂停\恢复功能,详见代码。

其实就是个时间触发的操作系统内核雏形,在不上操作系统并且系统要求不高的时候的时候就这样拿来用用也蛮好用的。不过此时所有的任务均是在SysTick定时器定的1ms中断中执行的,所以被添加的函数执行时间不能太长。


工程下载如下:

链接:http://pan.baidu.com/s/1nv8dIWT 密码:faaz


0 0