HomeTOOLSEXAMPLESEXPLORE EMBEDDEDE CSERVICESECU SAMPLESRegistration
Embedded C programming Tutorial , Keil C ide , microsoftware.gr
Keil CRC and CAN BUS codes.
1. Shift led left
2.It's time for DAVE! <7/6/13>
3.Capture/Compare unit 6
4.ASC0-GPT1-MACROS
5.ASC0-FIFO-PEC
6.Analog converter
7.Memory manipulation routines
8. Recursion
9.Understanding interrupt priorities using CAPCOM2 module
10. POINTERS TO FUNCTION <4/7/13>,<4/28/13>
11.Memory models, memory types
12. The heap , part 1
13. The heap , part 2
14. The heap , part 3
15. Structure example
16. Nested structures, Array of structures.
17. Passing array of structures to function using pointers.<1/5/13>
18. Self Referential Structures
19. BITFIELDS
20. Linked list example
21. Circular linked list
22. Union example
23. Enumeration example
24. Watchdog timer example
25. Void pointer example <7/4/13>
26. The sieve of Eratosthenes
27. The stack
28. Union and bitfields as flags example. <6/23/13>
29. Look up table example. <8/11/13>
30. Seven segment display multiplexing -four digits with dot- example
31. LCD character display example - JHD162A
32. Hash table introduction example <8/27/14>
33. Array of Linked Lists example
34. Array of Linked lists-more functions included.
35. Hash table construction,searching and printing.
36. Fininte state machines- a first approach.
37. Finite state machines- two events example.
38. SPI port and an AT25128 serial eeprom hardware.
39. CRC CHECK
40. Definite Integral Calculator for Scientists, Engineers...
41 .Hamming distance of a CRC polynomial
42. Linux play starting.
43. Galois GF(2^4) Finite Field
44. Construct your own time triggered real time operating system.
45. CANBUS C CODE EXAMPLE.
10. POINTERS TO FUNCTION <4/7/13>,<4/28/13>

This article includes three examples about pointers to function.

These three examples are received from the page: A good place about pointers and some topics of C.  and ,of course, they are modified a bit to run for a xc164cm microcontroller.
They are all included in one .C file , the main.c file.

EXAMPLE 1 : We have a pointer ptr to a function whose parameter is  void and returning a pointer to an integer.

EXAMPLE 2 : We have a pointer ptr to a function whose parameter is  a character that returns an integer (this is int find(char c) ),because Ptr is equal to the return of function (). 
But function () whose parameter is void returns the address of  a function (&find, a pointer's value), whose function the parameter is a character that returns an integer.

EXAMPLE 3 : We have a pointer ptr to a function whose parameters are a pointer to an integer and a pointer to a float and whose return value is a pointer to a character (a string).

The c code for the examples is here.
Open Hyperterminal at 19,200 kbaud run the code  and watch the result here.

Exercise :
Build the example 4 of the above mentioned page by yourself.
Help: Becarefull! By default, strings are saved in flash memory space. Search Keil page to find the solution.


EXAMPLE 5  This is a universal form of the bubble sort example included in Ted Jensen's tutorial, page 50.

To give a universal form to bubble () in order to be able to sort any data type we have to insert in it a pointer to a function fptr , declaring it as:
void bubble (..., int(*fptr)(  ...   ) ); 
Having in mind that the name of a function decays into the address of that function (a function pointer  value) we can call bubble() writing bubble(... , compare_long);  or writing
bubble(... , compare_string);



The C code                                             The result


EXAMPLE  6   This is a function pointer array example.
Making arrays whose elements are function pointers is a case of interest. We can call functions indexing them.
At this example we make an array of four function pointers declaring it as:
float (*fp[4]) (float x , float y);
Each one of the pointed functions  includes as arguments a float x and a float y and returns a float.
We call the function pointed by the i th element of the array writing (*fp[i])(c,d)  or  fp[i](c,d)  where c and d are floats.



The C code                                                           The result





 

Home|TOOLS|EXAMPLES|EXPLORE EMBEDDEDE C|SERVICES|ECU SAMPLES|Registration