嵌入式C
lidandan2016
这个作者很懒,什么都没留下…
展开
-
ARM定义特殊寄存器(*(volatile unsigned long *))的理解
以前老是对ARM程序中(*(volatile unsigned long *))不理解,今天看了两篇文章,觉得对理解这个很有用,当然这个不止在定义内部特殊寄存器有用,在用到外部总线时,根据具体情况,定义外部器件的地址也可以用。下面是文章一终于理解了#define SREG (*(volatile unsigned CHAR *)0x5F)。 以前看到#define SREG (*(转载 2016-03-08 18:21:59 · 428 阅读 · 0 评论 -
LWIP之TCP通信
1、在ucosII系统中创建一个进程: //TCP 2000 OSTaskCreate(tcp, (void *)0, &gstack_task_socket4[TASK_SOCKET4_STK_SIZE - 1], 14); OSTaskNameSet(14, "tcp", &os_err);2、进程的具体处理: void tcp(void *arg){转载 2016-03-14 09:47:32 · 930 阅读 · 0 评论 -
STM32各种时钟的来源
时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32。 下面是从网上找的一个STM32时钟框图,比《STM32中文参考手册》里面的是中途看起来清晰一些: 重要的时钟: PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1、HSI:高速内部转载 2016-12-02 15:16:39 · 9499 阅读 · 0 评论 -
STM32 NVIC中断优先级管理
CM3内核支持256个中断,其中包含了16个内核中断和240个外部中断,并且具有256级的可编程中断设置。但STM32并没有使用CM3内核的全部东西,而是只用了它的一部分。STM32有84个中断,包括16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。而我们常用的就是这68个可屏蔽中断,但是STM32的68个可屏蔽中断,在STM32F103系列上面,又只有60个(在107系列才有68个原创 2016-12-02 16:54:07 · 1306 阅读 · 0 评论 -
C函数之memcpy()函数用法
函数原型void *memcpy(void*dest, const void *src, size_t n);功能由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。头文件#include返回值 函数返回一个指向dest的指针。说明 1.sour转载 2017-07-10 11:37:55 · 247 阅读 · 0 评论 -
I2C通信的实践,学习笔记
本文是我自己实际工作中,对I2C通信协议的学习,实现过程的一个总结。它记录了我从对I2C一无所知到最终能够熟练实现I2C协议的一个过程。希望能够帮到不了解I2C通信协议却正好要使用I2C的一些小伙伴们。叙述的方式还是一点一点来,尽量简单,用到哪儿再详细说哪儿。一提到通信我们自然会想到要有两个设备,在它们之间相互传递数据的过程就叫通信。那么它们怎么传递数据呢?硬件上怎么连接?什么时候开始发送数据...转载 2019-05-23 18:28:09 · 1087 阅读 · 0 评论