如何找到微控制器是大端还是小端?
没有微控制器规范,如何知道控制器是Big endian还是Little Endian?
从我读到的,我的问题的解决方案是使用中断,但如果我正确理解它,我不能在中断调用的例程中使用延迟.我有一个大按钮LED开关.我希望它在闲置时有一个心跳,但一旦它被按下,保持绿色并执行代码.
heartbeat()如果我按下按钮足够的次数,我可以打破(我假设在正确的时间完成状态更改,因为它完成了循环heartbeat),但我仍然坚持如何使它在第一次点击时工作.有没有其他方法来做我正在尝试的事情?
void loop(){
heartbeat(); //Make LED beat.
buttonVal = digitalRead(buttonPin); //Check the button.
if (buttonVal != buttonState) { //If the button state changed.
if (buttonVal == HIGH){ //Check if the button is pressed.
analogWrite(greenPin, 255); //Button stays green once pushed.
functionA //Has some delays in it.
functionB //Has some other delays.
}
}
}
void heartbeat(){
for(i = 0; i < pmw; i++) {
analogWrite(greenPin,i);
delay(((60000/rate)*.1)/pmw);
}
for (i = pmw; i > 0; …Run Code Online (Sandbox Code Playgroud) 我想将两个字节组合成一个无符号长变量,我当前的代码不起作用.我使用的是MPLAB C18编译器,这是我的代码.
unsigned long red = 0;
BYTE t[2];
t[0] = 0x12;
t[1] = 0x33;
red = 100 * t[0] + t[1];
printf("%lu", red);
Run Code Online (Sandbox Code Playgroud)
请让我知道为什么我没有得到1233作为我的输出.
我正在尝试使用用户级指令实现一个简单的RISC-V 32位内核.
在尝试实现ISA时,我在列表中找到了一条指令(系统).任何人都可以解释系统指令的工作(管道中会有哪些变化).
我目前正在研究C中的微控制器项目,该项目需要进行多个定时功能.我使用硬件定时器每毫秒产生一个中断,变量作为计数器产生适当的时间间隔.硬件细节并不重要.
例如,对于特定函数,将在1ms计数器的每个滴答上执行以下代码,从而导致每10ms调用一次Function().
if (count < 10)
{
count++;
}
else
{
Function();
count = 0;
}
Run Code Online (Sandbox Code Playgroud)
我想实现一个包装函数,以避免为每个不同的时间间隔重写计数器代码,即:
TimerWrapper(required interval 1, Function 1 pointer)
TimerWrapper(required interval 2, Function 2 pointer)
Run Code Online (Sandbox Code Playgroud)
并在计时器的每个刻度上调用它.为了实现这一点,包装器调用的每个不同函数都需要有一个单独的计数变量,需要在TimerWrapper()的调用之间保持不变.我想将所有实现细节与我的主程序分开,并尽可能少地将变量引入我的主程序.
有可能做我要问的事情,还是有更简单/更好的方法来达到同样的效果?我知道如何用面向对象的语言做到这一点但我的技能缺乏简单的C.
因此,在查看大规模的互联网后,我无法找到答案.
说我有这段代码:
if(P4IN & GPIO_PIN1?0:1){
if (state==1){
state = 0;
//Wait for this state to pass -- ends up saving the current state on button press.
while (counter < 10000){
counter++;
}
}
else{
state = 1;
while (counter < 10000){
counter++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怎么会重写这个,所以if(P4IN & GPIO_PIN1?0:1)不是这样写的.我不介意创建额外的if/else条件或扩展此代码块(用于MSP432)
谢谢你的时间.
这个话题很简单,我承认我在Google上找不到很多东西。
最近,我开始在STM32上进行编码,对于一个来自与PC相关的应用程序的人来说,设置所有时钟都是相当新的。
我想知道为什么开发人员会想放弃/避免最大时钟,在哪种情况下?假设微控制器可以在168Mhz上工作,为什么我应该选择84Mhz?
它主要与功耗有关吗?还有其他原因吗?
为什么STM32团队(以及我猜想也是微芯片)要在STM32CubeMX上设置一个非常好的UI来选择不同的组合而麻烦?如果我可以达到更高的工作频率,为什么我应该直接使用外部振荡器而不是PLL路径?
我的面包板上有一个简单的PIC16F18877电路设置,我已成功获得一个LED在无限while循环内闪烁.我试图将相同的代码放在一个for只应执行5次的循环中,但LED会一直闪烁.
我的代码(带XC8编译器的MPLAB):
#include <xc.h>
#define _XTAL_FREQ 8000000
int main()
{
TRISD1 = 0;
for (int i = 0; i < 5; i++)
{
RD1 = 1;
__delay_ms(500);
RD1 = 0;
__delay_ms(500);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用stm32f2xx系列控制器.我想知道在没有对外部闪存进行任何读/写操作的情况下是否将外部闪存连接到微控制器.那可能吗?
如果是,请解释这样做的方法.
如果重要,控制器和外部闪存之间的通信是SPI.
提前致谢.
AVR微控制器中的Beatwean X,Y和Z寄存器有什么区别。它们每个适合C编译器?编译器在哪里存储堆指针,堆栈指针,帧指针?该寄存器是否具有相同的功能或在不同的空间(例如EEPROM,RAM)中提供寻址。
microcontroller ×10
c ×5
pic ×3
mplab ×2
arduino ×1
avr ×1
clock ×1
embedded ×1
flash-memory ×1
for-loop ×1
if-statement ×1
interrupt ×1
ram ×1
riscv ×1
stm32 ×1