- 博客(51)
- 资源 (2)
- 收藏
- 关注
原创 【软件使用】Eclipse中文注释太小
Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Bascic -> Text Font -> Edit -> 西欧语言变成中欧字符 -> 确定&保存
2018-05-07 17:03:07
247
原创 定时器的使用
编程环境 Qt Creator 3.0.0 Base on Qt 5.2.0 (MSVC 2010,32 bit)//ui界面添加一个label控件//mainwindow.h文件private slots: void TimerUpdata();//mainwindow.c文件MainWindow::MainWindow(QWidget *parent) : QMainW
2017-08-04 14:17:11
282
原创 关闭主窗口显示确认退出窗口
测试环境Qt Creator 3.0.0Base on Qt 5.2.0 (MSVC 2010,32 bit)//mainwindow.h文件#include <QCloseEvent>#include <QMessageBox>private slots: void closeEvent(QCloseEvent *event);//mainwindow.c文件void MainW
2017-08-04 11:33:47
1057
原创 设置窗口置顶
void MainWindow::on_pushButton_clicked(){ static bool bTop = false; bTop = !bTop; if(bTop) this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); else thi
2017-08-04 11:22:12
2717
原创 NRF51822通道设置的理解
NRF51822共有8个可选择通道(0-7),其中通道0单独设置地址。通道1-7的高4字节公用,低1字节单独设置。 比如; NRF_RADIO->PREFIX0 = 0xC3C2C1C0UL; // 通道3-0的低1字节 NRF_RADIO->PREFIX1 = 0xC7C6C5C4UL; // 通道7-4的低1字节 NRF_RADIO->BASE0 = 0x999999
2017-07-11 15:06:55
1114
原创 FreeRTOS学习8--低功耗tickless
#define configUSE_TICKLESS_IDLE 1/*启用低功耗模式FreeRTOSConfig.h文件中*//*低功耗模式的进入与退出函数定义 FreeRTOSConfig.h文件中*/extern void PreSleepProcessing(uint32_t ulExpectedIdleTime);extern void PostSleep
2017-06-11 13:45:52
1460
原创 FreeRTOS学习7--事件标志组
EventGroupHandle_t EventGroupHandler = NULL; /*定义事件标志组*/EventGroupHandler=xEventGroupCreate(); /*创建事件标志组*/#define EVENTBIT_0 (1<<0) #define EVENTBIT_1 (1<<1)#define EVENTBIT_AL
2017-06-10 00:14:47
1378
原创 FreeRTOS学习6--软件定时器
TimerHandle_t TimerHandle_tim1;/*定义定时器1变量*/TimerHandle_t TimerHandle_tim2;/*定义定时器2变量*/TimerHandle_tim1 = xTimerCreate("tim1",1000,pdTRUE,(void *)1,TimerHandle_tim1_callback);/*创建tim1的中断时间1000ms,自动
2017-06-09 22:34:41
488
原创 FreeRTOS学习5--互斥信号量
SemaphoreHandle_t MySemaphoreHandle_led; /*定义变量*/MySemaphoreHandle_led = xSemaphoreCreateMutex();/*创建互斥量*/ if(NULL == MySemaphoreHandle_led) printf("xSemaphoreCreateMutex error\r\n");//L
2017-06-09 19:18:59
757
原创 FreeRTOS学习4--计数型信号量
SemaphoreHandle_t MySemaphoreHandle_led;/*创建变量*/MySemaphoreHandle_led = xSemaphoreCreateCounting(10,0);/*创建计数型信号量*///LED0void led0_task(void *pvParameters){ u8 num = 0; while(1) {
2017-06-09 17:57:44
1093
原创 FreeRTOS学习3--二值信号量
SemaphoreHandle_t BinarySemaphore; /*二值信号量句柄*/BinarySemaphore=xSemaphoreCreateBinary(); /*´创建二值信号量*///LED0void led0_task(void *pvParameters){ while(1) { LED0=~LED0; xSemapho
2017-06-09 16:42:13
424
原创 FreeRTOS学习2--队列
QueueHandle_t Led0_Queue; /*定义队列*/Led0_Queue = xQueueCreate(LED0_Q_NUM,sizeof(u8)*LED0_Q_NUM);/*创建队列*/if(NULL == Led0_Queue){ printf("Led0_Queue error\r\n");}err = xQueueSend(Led0_Queue,&
2017-06-09 15:41:28
354
原创 FreeRTOS学习1--任务挂起与恢复
代码//LED0void led0_task(void *pvParameters){ int num = 0; while(1) { LED0=~LED0; num++; if(num%10 == 0) { vTaskResume(LED1Task_Han
2017-06-07 16:42:31
1958
原创 驱动学习8--gpiolib的使用
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h>#include <linux/leds.h> //struct led_classdev#include <ma
2017-06-06 00:45:40
345
原创 驱动学习7--led动态映射与结构体
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-04 19:36:20
342
原创 驱动学习5--led动态映射
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-03 20:31:23
367
原创 驱动学习4--led静态映射
驱动#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacces
2017-06-03 17:25:01
337
原创 驱动学习3--添加copy_from_user©_to_user
驱动代码#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#include <asm/uacc
2017-06-03 10:13:40
287
原创 驱动学习2--注册设备
#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exit#include <linux/fs.h> //register_chrdev file_operations#define DEMO_NAME "de
2017-06-02 16:58:31
235
原创 驱动学习1--最简单的驱动
#include <linux/module.h> // module_init module_exit#include <linux/init.h> // __init __exitstatic int __init chrdev_init(void) /*模块安装*/{ printk(KERN_INFO "chrdev_init\n");
2017-06-02 14:52:23
535
转载 线程学习1--pthread_create
概述因为pthread并非Linux系统的默认库,而是POSIX线程库。在Linux中将其作为一个库来使用,因此加上 -lpthread(或-pthread)以显式链接该库。函数在执行错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。正文函数函数原型int pthread_create(pthread_t thread, const pth
2017-06-01 21:01:00
374
转载 多路复用IO&select&poll
概述Linux提供了两个函数来实现多路复用IO操作正文函数select函数原型int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *set); int FD_ISSET(int fd, fd_set
2017-06-01 18:06:59
314
转载 fcntl更改阻塞与非阻塞模式&读取鼠标键盘值
#define MOUSE "/dev/input/mouse1"int main(int argc,char **argv){ int fd = -1,ret = -1; char buf[100] = {0}; fd = open(MOUSE,O_RDONLY|O_NONBLOCK );/*鼠标非阻塞*/ if(fd<0) { per
2017-06-01 15:51:39
609
转载 进程学习12--alarm
概述alarm(time);执行之后告诉内核,让内核在time秒时间之后向该进程发送一个定时信号,然后该进程捕获该信号并处理; pause函数的作用就是让当前进程暂停运行,交出CPU给其他进程去执行。当当前进程进入pause状态后当前进程会表现为“卡住、阻塞住”,要退出pause状态当前进程需要被信号唤醒。正文函数alarm函数原型unsigned int alarm(unsigned int s
2017-06-01 11:36:07
491
转载 进程学习11--信号signal
概述正文函数函数原型sighandler_t signal(int signum, sighandler_t handler);参数参数signum我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。 (1)SIGINT 2 Ctrl+C时OS送给前台进程组中每个进程 (2)SIGABRT
2017-06-01 10:48:37
953
转载 进程学习10--syslog记录调试信息
概述syslog的守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。 一般log信息都是在 /var/log/messages文件中存储,ubuntu中是在 /var/log/syslog文件中正文函数openlog函数原型void ope
2017-05-31 20:33:21
364
转载 进程学习9--守护进程&create_daemon
进程查看命令ps (1)ps -ajx 偏向显示各种有关的ID号 (2)ps -aux 偏向显示进程各种占用资源向进程发送信号指令kill (1)kill -信号编号 进程ID,向一个进程发送一个信号 (2)kill -9 xxx,将向xxx这个进程发送9号信号,也就是要结束进程何谓守护进程 (1)daemon,表示守护进程,简称为d(进程名后面带d的基本就是守护进程) (2)长期运
2017-05-31 17:01:48
414
转载 进程学习8--进程状态和system函数
概述进程的5种状态 (1)就绪态。这个进程当前所有运行条件就绪,只要得到了CPU时间就能直接运行。 (2)运行态。就绪态时得到了CPU就进入运行态开始运行。 (3)僵尸态。进程已经结束但是父进程还没来得及回收 (4)等待态(浅度睡眠&深度睡眠),进程在等待某种条件,条件成熟后可进入就绪态。等待态下就算你给他CPU调度进程也无法执行。浅度睡眠等待时进程可以被(信号)唤醒,而深度睡眠等待时不能被
2017-05-31 15:40:58
402
转载 进程学习7--exec族函数
概述为什么需要exec函数 (1)fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上将会和父进程程序同时进行) (2)可以直接在子进程的if中写入新程序的代码。这样可以,但是不够灵活,因为我们只能把子进程程序的源代码贴过来执行(必须知道源代码,而且源代码太长了也不好控制),譬如说我们希望子进程来执行ls -l
2017-05-31 14:55:37
370
转载 进程学习6--waitpid与wait差别
概述(1)基本功能一样,都是用来回收子进程 (2)waitpid可以回收指定PID的子进程 (3)waitpid可以阻塞式或非阻塞式两种工作模式,wait只能是阻塞式工作模式正文函数函数原型waitpidpid_t waitpid(pid_t pid, int *status, int options);参数参数pid表示要回收的PID号(-1表示不指定pid号) 参数status为子进程返回
2017-05-31 11:09:59
299
转载 进程学习5--父进程wait回收子进程
概述wait的工作原理 (1)子进程结束时,系统向其父进程发送SIGCHILD信号 (2)父进程调用wait函数后阻塞 (3)父进程被SIGCHILD信号唤醒然后去回收僵尸子进程 (4)父子进程之间是异步的,SIGCHILD信号机制就是为了解决父子进程之间的异步通信问题,让父进程可以及时的去回收僵尸子进程。 (5)若父进程没有任何子进程则wait返回错误正文函数函数原型waitpid_t
2017-05-31 10:50:29
512
转载 进程学习4--fork创建进程
概述为什么要创建子进程 (1)每一次程序的运行都需要一个进程 (2)多进程实现宏观上的并行fork的内部原理 (1)进程的分裂生长模式。如果操作系统需要一个新进程来运行一个程序,那么操作系统会用一个现有的进程来复制生成一个新进程。老进程叫父进程,复制生成的新进程叫子进程。 (2)fork的演示 (3)fork函数调用一次会返回2次,返回值等于0的就是子进程,而返回值大于0的就是父进程。
2017-05-31 10:05:01
388
转载 进程学习3--getpid&getppid
概述getpid&getppid都是与进程ID相关的函数正文函数getpid函数原型pid_t getpid(void);参数无返回值返回当前进程ID函数getppid函数原型pid_t getppid(void);参数无返回值返回当前进程的父进程ID测试代码int main(void){ pid_t Mypid,Myppid; Mypid = getpid(); Myppi
2017-05-30 23:04:44
489
转载 进程学习2--进程环境
环境变量(1)export命令查看环境变量 (2)进程环境表介绍.每一个进程中都有一份所有环境变量构成的一个表格,也就是说我们当前进程中可以直接使用这些环境变量。进程环境表其实是一个字符串数组,用environ变量指向它。 (3)程序中通过environ全局变量使用环境变量 (4)我们写的程序中可以无条件直接使用系统中的环境变量,所以一旦程序中用到了环境变量那么程序就和操作系统环境有关了。
2017-05-30 21:57:26
209
转载 进程学习1--atexit
http://baike.baidu.com/link?url=6kouIRDJFPWyl4KVIxif8qyMkI1K0gKX6JMVJav4mBV81wye_JwxBs5_kqZ8VGz3LH58zuIYYa2nLHahQp9KlK
2017-05-30 21:21:42
188
转载 rand随机数
概述利用Linux库函数获取随机数正文函数函数原型srandvoid srand(unsigned int seed);参数seed获取随机数的种子(依赖)函数rand函数原型int rand(void);参数无返回值随机数数值[0, RAND_MAX]测试代码int main(void){ printf("RAND_MAX = %d\r\n",RAND_MAX); srand(ti
2017-05-30 16:19:52
346
转载 time函数相关
概述本历程都是Linux下关于时间计算函数使用,基准时间为 1970-01-01 00:00:00 +0000(UTC) 注意xx与xx_r的使用方式,涉及到可重入与不可重入函数的使用正文函数time(获取秒数)函数原型time_t time(time_t *t);参数参数t是把time获取的秒数存到地址处返回值返回时间(s)函数ctime(由秒数获取字符串时间)函数原型char *ctime
2017-05-30 15:05:15
448
转载 opendir&readdir
概述opendir函数是打开一个文件夹 readdir函数是获取一个文件夹下面所有文件的信息(1)opendir打开一个目录后得到一个DIR类型的指针给readdir使用 (2)readdir函数调用一次就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。 (3)readdir调用一次只能读出一个
2017-05-30 08:55:18
1173
转载 chmod
http://c.biancheng.net/cpp/html/306.htmlint chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 区别,一个是未被打开的,一个是已经打开的int main(int argc,char *argv){ int ret = -1; ret = chm
2017-05-29 23:23:00
229
转载 文件权限管理&access
概述ls -l打印出的权限列表 (1)123456789一共9位,3个一组。第一组三个表示文件的属主(owner、user)对该文件的可读、可写、可执行权限;第2组3个位表示文件的属主所在的组(group)对该文件的权限;第3组3个位表示其他用户(others)对该文件的权限。 (2)属主就是这个文件属于谁,一般来说文件创建时属主就是创建这个文件的那个用户。但是我们一个文件创建之后还可以用cho
2017-05-29 23:02:11
587
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅