问题标签 [mikroc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
embedded - STM32 闪烁的例子不起作用
这是来自 MikroC 的“简化闪烁”示例,旨在以肉眼可见的速率切换用户 LED:
此代码的预期结果是端口 A5 引脚 (LED) 将以 300 毫秒的速率切换。微控制器部分是 NUCLEO 板上的 STM32L476RG。
实际结果仍然是——什么都没有。没有眨眼。
我已经通过从相同的板上加载十六进制文件到板上来测试板,恢复响应用户按钮按下的“工厂”闪烁演示。有用。所以设备很好,编程过程正常。
我已经在调试器中逐步完成了代码,并按预期观察了 GPIOA_ODR 寄存器的切换。
我的方案是使用“默认”按钮创建的,从 MSI 内部振荡器以 4 MHZ 运行内核,如下所示:
问题:这个默认方案或这个阻止它工作的简单代码有什么问题?
注意我选择了 MikroC 标签,即使这是 STM32 部件。MikroC 标签的定义错误地特定于 PIC 设备。
当我就这个问题联系供应商时,他们给了我一个要加载的方案文件。我试图加载它,但它甚至不会加载。它有一些拼写错误。根据上面的默认方案更正它们后,示例仍然不起作用。他们选择了许多非默认设置。我的理由是,如果我使用默认 (MSI) 时钟和默认方案,我至少应该能够让部件以 4MHz 运行,并有一个成功的起点来进一步改进。
最后,来自项目配置器的配置寄存器值如下:
arm - STM32最大中断处理频率
我正在尝试实现我自己的从 FPGA 到 STM 的 SPI 通信,其中我的 FPGA 作为 MASTER 并生成用于通信的芯片启用和时钟。FPGA在其上升沿发送数据并在其下降沿接收数据我的FPGA代码正常工作。
在 STM 端,我在中断时捕获这个主时钟并在其上升沿接收数据并在其下降沿传输,但如果我将时钟速度从 250khz 提高到通信将无法正常工作
据我了解,STM 在 168 兆赫兹下工作,我根据 168 兆赫兹设置时钟设置,处理 1 兆赫兹中断不是一个大问题,所以你能指导我如何在 STM 中处理这个高速时钟
我的代码写在下面
binary - 数字转换功能
我一直在尝试找到一些代码来帮助我为我的最终项目编写程序,但是在找到足够相关的示例以让我继续前进时遇到了麻烦。
我希望编写的程序将从或转换输入数字Decimal
,并以转换后的形式显示该值。Binary
Hex
我为转换程序找到了类似的代码,我理解模数过程,但是我很难理解接口过程以及如何从键盘获取输入值,存储为单个变量,然后用于转换过程。
我将 PIC16F877A 和 MikroC 用于编译器程序,该项目使用 4x4 键盘和 2x16 LCD 进行显示。
任何反馈和建议将不胜感激。
谢谢
pic - 如何定义 Rb0 到 Rb6 = hex (x%10); // 没有 Rb7 引脚
使用 MikroC Pro for PIC16f73 复用 7 段,编写的程序为:
PORTB
意味着总共包含 8 个引脚RB0
,RB7
但我只想将 7 个引脚用于 7 个段RB0
,而作为其他 O/PRB6
的引脚仅为 0 或 1。RB7
喜欢和Rb0
_Rb6 = hex (x%10)
Rb7_bit = 0 or 1
那么如何定义线Rb0 to Rb6 = hex (x%10);
c - MikroC 中的嵌套调用限制是什么?
我想知道什么是嵌套调用限制。我正在使用 MikroC 进行 PIC 编程。
它说以下限制,
mikroC PRO for PIC 将非递归嵌套调用的数量限制为:
- PIC12 系列的 8 次调用,
- PIC16 系列的 8 次调用,
- 16 要求 PIC16 增强型系列。
- PIC18 系列的 31 次调用。
它是外部函数调用限制还是 If else 或循环调用限制?什么嵌套调用?如何在代码中计数来识别它是否兴奋?
c - 如何识别堆栈溢出的错误点是在 MikroC 代码中强制设备重置错误
描述:
我尝试使用 PIC18F4550 微控制器和 MikroC 编程语言制作电路。这是我的程序序列。
- 有 20 个时间表可供选择,每个时间表有 6 个计时值。
- 该计划编号存储在第一个 EEPROM 中,其他时间数据存储在 10 到 129 个 EEPROM 存储器中。(6 个时序值 x 20 个计划,从 10 个内存开始)
- 用户可以选择其中一个时间表并且可以编辑每个时间表的时间。
- 当用户选择时间表时,输出延迟的这些时间值。
- LCD显示屏上的数据显示
- 这有 6 个输入。(设置 (B1)、向上 (B2)、向下 (B3)、进入 (B4)、重置 (B5)、测试 (B6)、接近 (B7)
我只是添加这个只是为了理解代码。
代码:
这是我用 MikroC 语言编写的这个序列的程序。还是没写完。
错误:
当我在此代码中再添加一行时,例如Delay_ms(300);
行,那么我的 Proteus Simulation 和真正的实用程序都不起作用。但IC 中的程序存储器未满。IC 正在复位。
Proteus Simulation不断给我以下错误信息。
[PIC18 堆栈] PC=0x09BC。堆栈溢出正在强制设备复位。[U1]
我认为这不是嵌套调用限制错误,因为此代码没有比推荐的函数调用更多的函数调用。
mikroC PRO for PIC 将非递归嵌套调用的数量限制为:
8 次调用 PIC12 系列,8 次调用 PIC16 系列,16 次调用 PIC16 增强系列。PIC18 系列的 31 次调用。
问题:
如何识别代码中的错误点以及如何解决这个问题?什么是0x09BC
重点。
如果您想要任何其他数据来识别错误,请告诉我。
这是 Proteus 和 MikroC 代码链接下载
模拟实战:
我做了以下实际操作,但我无法识别错误点。
这是 CPU Stack 和 CPU Data Memory 中没有 Stack Overflow 错误的数据。CPU 数据内存存储在最后一个内存位置和中间内存位置是空闲的。
这是 CPU 堆栈和 CPU 数据存储器中出现堆栈溢出错误的数据。CPU 数据内存存储在最后一个内存位置和中间内存位置是空闲的。
同样在 CPU 堆栈中,连续从 31 变为 0,即变为0x09BC
.
EEPROM 也有很多空闲的内存位置。
mikroc - 为什么我的 If 语句不能正常工作?
所以我正在构建一个简单的 MikroC 程序,如果 PORTA.B0 等于 1,则设置 PORTB.B0
但是它没有给我任何东西 PortB.B0 不等于 1 只有 portA。
任何人都可以帮忙吗?
mikroc - LCD 中的左移命令无法正常工作
所以我正在用 MikroC 编写一个程序,它在 LCD 上打印一个文本,并每 13 毫秒向右移动一次。当文本完全向右移动时,它会向左移动,每当处理第一个中断时,它就会像这样来回移动。在第二次中断时没有移动,文本就停留在那里。
但是,当我在模拟器上运行程序时,当它完成向右移动时,它不会向左移动。它只是向右移动,直到第一个字母再次出现并转了一圈。
有任何想法吗?
microcontroller - 使用 UART 串行通信将 4 个微控制器连接到 pc
**有没有办法使用 UART 将 4 个微控制器连接在一起,即使每个微控制器都有一个 UART 模块(18f452),将其中三个微控制器的数据发送到主机(18f4550)以在电脑上显示
主 UC "U4" 的 mikroC 代码
奴隶的 mikroC 代码