Author Archives: admin

STM32微控制器之跑马灯实验程序(寄存器基础版)

STM32微控制器入门最经典实验程序莫过于跑马灯。通过对STM32微控制器GPIO端口的高低电平控制,实现LED灯的打开与关闭,达到跑马灯的效果。

一、实验环境
微控制器:STM32F103R6;仿真软件:Proteus 8.11;开发工具:Keil MDK 5.33。

二、原理图
跑马灯实验所用的8个LED灯,分别接在STM32微控制器的PB0,PB1,…,PB7,通过IO端口的高低电平控制实现跑马灯效果。
Continue reading

Linux系统编程之查看文件大小的三种方法(lseek、fseek和stat函数)

Linux系统编程之查看文件大小的方法,以前发过两种方法,即使用lseek和stat函数。今天再补充一种方法,即使用fseek和ftell函数实现。

#include <sys/types.h>
#include <unistd.h>
 
off_t lseek(int fd, off_t offset, int whence);
#include <stdio.h>

int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
 
int stat(const char *pathname, struct stat *statbuf);
int fstat(int fd, struct stat *statbuf);
int lstat(const char *pathname, struct stat *statbuf);

Continue reading

C语言程序设计之创建动态二维数组问题的解决方案

C语言动态创建一维数组只需使用malloc或者calloc就可以,但是动态创建二维数组就复杂得多。那么,要怎样才能动态创建二维数组呢?

一、创建非连续空间的动态二维数组
二维数组可以看作是由许多行组成的,每一行都是一个一维数组。首先创建一个一维的指针数组,然后为该指针数组中的每个指针再创建一个一维数组,这样就动态创建一个二维数组了。。实现代码如下:
Continue reading

Linux系统编程之C语言库函数大全

第1章 字符测试函数
isalnum(测试字符是否为英文字母或数字)
isalpha(测试字符是否为英文字母)
isascii(测试字符是否为ascii码字符)
isblank(测试字符是否为空格字符)
iscntrl(测试字符是否为ascii码的控制字符)
isdigit(测试字符是否为阿拉伯数字)
isgraph(测试字符是否为可打印字符)
islower(测试字符是否为小写英文字母)
isprint(测试字符是否为可打印字符)
isspace(测试字符是否为空格字符)
ispunct(测试字符是否为标点符号或特殊符号)
isupper(测试字符是否为大写英文字母)
isxdigit(测试字符是否为16进制数字)
Continue reading

Linux系统编程之获取/dev/input目录下的event对应的键盘设备

我们在Linux操作系统下使用input子系统时,键盘会有一个对应的/dev/input/event接口。可以通过ioctl函数来读取键盘设备名,因为每一个设备名是固定的,再根据设备名区分event。我的系统是Fedora 32,共有20个event接口,如下:

[root@fedora Workspace]# ls /dev/input/event*
/dev/input/event0   /dev/input/event15  /dev/input/event4
/dev/input/event1   /dev/input/event16  /dev/input/event5
/dev/input/event10  /dev/input/event17  /dev/input/event6
/dev/input/event11  /dev/input/event18  /dev/input/event7
/dev/input/event12  /dev/input/event19  /dev/input/event8
/dev/input/event13  /dev/input/event2   /dev/input/event9
/dev/input/event14  /dev/input/event3

Continue reading