指针接收函数

static struct _USART_BUF_FIFO_
{
    U8 wr;
    U8 rd;
    U8 ct;
    U8 buff[USART_BUF_LEN];
};struct _USART_BUF_FIFO_ TX_fifo , RX_fifo; 
void usart_tx_interrupt(void)
{
    U8 i;

    i = TX_fifo.ct;

    // 继续发送缓冲区内数据
    if (i != 0)
    {
        // 数据字节长度减一
        TX_fifo.ct = --i;

        // 读索引值读取数据
        i = TX_fifo.rd;
        TXREG = TX_fifo.buff[i++];
        // 读索引值自动回零
        TX_fifo.rd = i % USART_BUF_LEN;
    }
    // 长度为零数据全部发送
    else
    {
        PIE1bits.TXIE = 0; //发送完关闭串口发送中断
    }
}
void usart_tx_interrupt(void)
{
    U8 *p;
    U8 *p1;
    U8 *p2;

    p = &TX_fifo.ct;
    p1 = &TX_fifo.rd;
    p2 = &TX_fifo.buff;

    if (*p != 0)
    {
        // 数据字节长度减一
        (*p)--;

        // 读索引值读取数据
        TXREG = *(p2+(*p1));
        (*p1)++;
        // 读索引值自动回零
        *p1 = (*p1) % USART_BUF_LEN;
    }
    // 长度为零数据全部发送
    else
    {
        PIE1bits.TXIE = 0; //发送完关闭串口发送中断
    }
}
时间: 2024-08-08 09:40:35

指针接收函数的相关文章

C#委托与C语言函数指针及函数指针数组

C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数. 在C语言中函数指针的申明如下: //可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的//参数(可以不接受参数). Type *Func(Type one,Type

函数指针与函数指针数组的使用方法

转自:http://blog.csdn.net/feitianxuxue/article/details/7300291 函数指针与函数指针数组的使用方法 函数指针: 函数指针包含函数在内存中的地址.数组名实际上就是数组的第一个元素在内存中的地址,类似地,函数名实际上也是执行这个函数任务的代码在内存中的起始地址. 函数指针可以传递给函数.从函数返回.保存在数组中.赋予另一个函数指针或者调用底层函数. 下面我们用数值算法accumulate讨论下函数指针的用法.accumulate是一种常用的ST

入职培训笔记记录--day9(1、指针函数与函数指针、函数指针数组 2、malloc memset 3、递归函数 4、结构体 5、共用体---》大小端 6、枚举)

1.指针函数与函数指针.函数指针数组 指针函数:返回值为指针的函数 char *fun() { char str[] = "hello world"; return str; } int main() { char *p = fun(); puts(p); return 0; } 编译时,会出现警告,返回了一个已经被释放掉的内存空间的首地址解决方法:1.static 2.char *str = "hello world"; 3.malloc 注意:使用完后要free

C++ —— 返回数组指针的函数

基础知识:数组不能被拷贝,函数不能返回数组,只能返回数组的指针或者引用. 定义一个 返回数组指针的函数 的方法,以 一个接收参数为 含有10个整型元素的数组的引用  和 返回一个含有10个整型元素的数组的指针 的函数为例. 法一:(不使用别名) int (*getCopyArr(int (&arr)[10]))[10] { int (*n)[10] = (int (*)[10])new int[10]; for (int i = 0; i < 10; i++) (*n)[i] = arr[i

你必须知道的指针基础-7.void指针与函数指针

一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针”. 因此void*只能表示一个地址,不能用来&取值,也不能++--移动指针,因此不知道多少字节是一个数据单位. int nums[] = {3,5,6,7,9}; void* ptr1 = nums; //int i = *ptr1; // 对于void指针没法直接取值 int* ptr2 = (i

学习笔记之14-返回指针的函数与指向函数的指针

一.返回指针的函数 指针也是C语言中的一种数据类型,因此一个函数的返回值肯定可以是指针类型的. 返回指针的函数的一般形式为:类型名 * 函数名(参数列表) 比如下面这个函数,返回一个指向char类型变量的指针 1 // 将字符串str中的小写字母变成大写字母,并返回改变后的字符串 2 // 注意的是:这里的参数要传字符串变量,不能传字符串常量 3 char * upper(char *str) { 4 // 先保留最初的地址.因为等会str指向的位置会变来变去的. 5 char *dest =

【C语言】-返回指针的函数与指向函数的指针

本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.iOS开发不感兴趣,请忽略 回到顶部 前言 前面我们花了接近3个章节学习指针,应该都感受到指针的强大了吧.指针可以根据地址直接操作内存中的数据,使用得当的话,不仅能使代码量变少,还能优化内存管理.提升程序性能.关于指针的内容还非常多,比如指针数组.指向数组的指针.指向指针的指针,呵呵,看到这些名字是否

指向结构体变量的指针作函数参数

 /********************* * 指向结构体变量的指针作函数参数 * ***********************/ #include<stdio.h> #include<string.h> struct student {  int num;  char name[20];  //char *name;    //若定义为指针则应与下面 stu.name = "jacob"; 配对使用,交叉使用则会报错                 //

C语言编程入门——指针与函数、数组

总结一下指针与函数和数组的关系及相关练习. 传统数组的缺点: # include <stdio.h> int main(void) { //数组的定义 int len = 5; int a[len]; //错误,数组的长度必须直接指定,且不能更改. int b[5]; //正确. return 0; } 确定一个数组需要几个参数: # include <stdio.h> //本函数功能是输出任意一维数组. void string(int * p, int l) //函数对数组进行处