Tag: 微芯片

如何在C中为PIC24编写硬件无关function

我正在研究一些可以实现各种function的代码,例如PID控制器,信号发生器等。 我的硬件提供各种输入和输出。 刚才我有一个SWITCH语句加载来确定我的计算的来源和目的地。 例如,对于PID控制器,每隔100ms就有一个开关命令决定将哪个输入传递给pid_calculate函数,然后是另一个开关来决定如何处理返回值。 由于我有32个模拟输入,以及can,lin和serial作为可能的输入,因此开关语句非常大! 我想参考或者一个物理示例,说明如何将某些东西编码为独立的硬件(在pic的范围内)function。 我确信答案在于指针,但我是C的新手并不确定从哪里开始指针。 我设想函数原型类似于int pid_init(* source,* destination)其中source是指向输入的指针,例如ADC缓冲区,目标可以是例如pwm占空比寄存器。 刚才我必须切换每个可能的条件然后将数据加载到寄存器中。 因此,为了澄清,我将如何实现一个允许它独立于输入和输出的函数,以及如何取消引用指针(假设指针是正确的方法) 我希望这是有道理的,谢谢你提前。

C:typedef union

在相关问题中找不到任何相关内容。 最有可能的是它的超级菜鸟,但无论如何我都会问/我的.h文件中有以下内容: typedef union _API_Packet_0x90{ uint8_t packet[26]; struct _pack_struct { uint8_t start; uint8_t length[2]; uint8_t addr64[8]; uint8_t addr16[2]; uint8_t options; uint8_t rfData[4]; uint8_t chksum; }; } API_Packet_0x90; API_Packet_0x90 ap90; 这是微控制器的代码,我使用的是xc8工具链(以前的Hi Tech C)。 编译器说: xbee_api.h:19:警告:缺少基本类型; int假设 xbee_api.h:19:错误:“;” 预期 xbee_api.h:19:警告:缺少基本类型; int假设 xbee_api.h:21:警告:缺少基本类型; int假设 ,这继续(错误太多) 我认为这是uint8_t,所以我添加了#include 。 不。 我以为这是关于名字的,所以我尝试了各种各样的戏剧,比如 typedef union { uint8_t packet[26]; struct _pack_struct { }; […]

将Fletcher校验和从32位重新编码为8位

这次转换是否正确? uint8_t fletcher8( uint8_t *data, uint8_t len ) { uint8_t sum1 = 0xff, sum2 = 0xff; while (len) { unsigned tlen = len > 360 ? 360 : len; len -= tlen; do { sum1 += *data++; sum2 += sum1; tlen -= sizeof( uint8_t ); } while (tlen); sum1 = (sum1 & 0xff) + (sum1 […]

XC8错误224:非法#指令(第一行)

我正在使用Microchip的XC8编译器。 他们希望我#include 而不是包含特定于芯片的标头。 但是,当我在代码的第一行添加此代码时,我收到错误: Error [224] C:\…\main.c; 1.4 illegal “#” directive 当我在指令之前放置换行符时,我没有收到错误。 为什么是这样? 我的完整代码: #include #pragma config OSC =INTIO67, WDT = OFF, LVP = OFF, PBADEN = OFF void main() { while (1); } 使用换行符,代码看起来一样,但顶部有一个空行。

什么是Pic18 micro的最佳c编译器

我们正在开始一个基于微芯片PIC18F252的新项目。 什么是最好的’c’编译器?

将ASM转换为C(不是逆向工程)

我用谷歌搜索,我看到一个惊人的轻浮反应基本上嘲笑提问者问这样一个问题。 Microchip免费提供一些源代码(我不想在这里发布,以防万一。基本上,谷歌AN937,点击第一个链接,有一个链接“源代码”及其压缩文件)。 它在ASM中,当我看到它时,我开始睁大眼睛。 我想把它转换成类似ac类型语言的东西,这样我就可以跟随它。 因为行如: GLOBAL _24_bit_sub movf BARGB2,w subwf AARGB2,f 可能很简单,但它们对我毫无意义。 必须有一些自动ASM到C的翻译器,但我能找到的只是人们说它不可能。 坦率地说,它不可能是不可能的。 两种语言都有结构,这种结构肯定可以翻译。 谢谢。