我有一个评估板(Olimex STM32-P103),它支持SD卡连接器.我想将我的程序放入SD存储器而不是微控制器的内部闪存; 并从那里运行它.根据boot-loader问题,我不知道是否可以这样做!
PS我的目标是在这块板上运行linux,然后将我的应用程序移植到它上面.
我有get_picture()一个拍照的功能.它返回一个类型为uint8_t的指针(存储pciture的位置),并获取一个指向存储图片长度的变量的指针.
这是宣言:
uint8_t * get_picture(int *piclength)
Run Code Online (Sandbox Code Playgroud)
在这里我称之为main():
unsigned int address, value;
address = (unsigned int)get_picture((int*)& value);
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 因为address我实际上应该将它定义为一个地址(这是正面的)int.
我正在使用 16F1703 PIC mcu,我想通过触摸按钮(A1)开始一个 7 段液晶循环(0-9)循环,之后如果我触摸按钮(A1)两次,我想要图片进入睡眠模式。
为此,我实现了这个:
#include <test_interrupt.h>
byte const DataExit[10]={0b01000100,
0b01011111,
0b01100010,
0b01001010,
0b01011001,
0b11001000,
0b11000000,
0b01011110,
0b01000000,
0b01001000};
byte const bitMask[8]={1,2,4,8,16,32,64,128};
//show seven numbers
void segmentCycle(void){
int i, j;
for(i=0;i<10;i++){
for (j=0; j<8;j++){
output_low(CLK);
output_bit(DATA,DataExit[i] & bitMask[j]);
output_high(CLK);
}
delay_ms(7000);
output_low(CLR);
delay_ms(6000);
output_high(CLR);
}
}
#INT_IOC
void IOC_isr(void)
{
segmentCycle();
sleep();
}
void main()
{
port_a_pullups(0x02);
enable_interrupts(INT_IOC_A1);
enable_interrupts(INT_IOC_A1_H2L);
enable_interrupts(GLOBAL);
while(TRUE);
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我触摸按钮,有时它会启动,否则不会。你有什么建议?
我正在使用 ccs 编译器。
我正在研究一个项目,它有两个按钮,每个按钮通过H桥将电机转向一个方向(时钟/反时钟),但是当我点击两个按钮时,我试图让电机停止按按钮.一切都工作正常,但我不能得到两个按钮部分...
这是我的尝试:
#include "motor.h"
#include <avr/io.h>
#include <util/delay.h>
int flag=0;
int main(void)
{
DDRD &= ~(1<<PD2);
DDRD &= ~(1<<PD3);
DDRB |= (1<<PB0);
DDRB |= (1<<PB1);
PORTB &= ~(1<<PB0);
PORTB &= ~(1<<PB1);
while(1)
{
if (PIND & (1<<PD2))
{
flag = 1;
}
else if (PIND & (1<<PD3))
{
flag = 2;
}
else if (PIND & (1<<PD3 ) && (1<<PD2))
{
flag = 3;
}
switch (flag)
{
case 1:
DC_MOTOR_PORT |= (1<<DC_MOTOR_PIN1);
DC_MOTOR_PORT &= ~(1<<DC_MOTOR_PIN2);
break;
case 2:
DC_MOTOR_PORT …Run Code Online (Sandbox Code Playgroud) 我在 STM32CubeIDE 中有一个项目,我使用以下命令在无头模式下从命令行运行该项目:
headless-bat -project "my-project-name/Debug" -build
并且构建成功。但是,当我尝试将同一项目复制到另一个目录并尝试运行它时,我收到此错误警告:没有与我用它编写的项目名称匹配的项目。我将项目复制到 c:/myworkplace,然后运行以下命令:
headless-bat -project "my-project-name/Debug" -workplace "c:\myworkplace" -build
但我收到了上面提到的错误。有人有什么主意吗?
我有一个微控制器和 4 个从设备连接到微控制器 I2C 总线。我对从 I2C 总线读取数据有一个疑问。当主机启动任何传输时,它会在 I2C 总线上写入设备地址,但我想知道从设备将如何在 I2C 总线中识别,数据是否属于它们。
我的疑问是关于通信的物理层,我从实践中知道,例如使用 teraterm 与 MCU 通信只是启用和配置 UART 外设,然后通过 USB 连接微控制器和瞧。
但对我来说,如果 USB 连接到 DN 和 DP,而 UART 使用 RX 和 TX,主机如何有效地与微控制器通信,这对我来说还没有意义?
我正在尝试使用 PIC16F877A MCU 和两个 DS8B20 传感器检测上升和下降的温度。当我尝试检测温度下降时,我遇到了问题。这是我的代码我想做什么:
#include "main.h"
void main() {
//Turn on LCD backlight
output_high(PIN_D7);
// Initialize LCD module
lcd_init();
float Threshold_Value = 30; // Temperature threshold value
while (TRUE) {
Show_User_Info();
delay_ms(10);
Read_Sensors();
// Starting to read user button values
User_Buttons();
delay_ms(20); // Minimum amount of time to read user button values
// Starting to compare user set temperature value and upper sensor temperature read value.
Compare_Upper_Temp();
delay_ms(20);
//================================
// Checking, if the MCU pin connected to pump …Run Code Online (Sandbox Code Playgroud) 我正在尝试借助在线资源来学习嵌入式系统,但我发现这非常困难。我对如何使用自动生成的 API 有一些疑问?我在 stm32cubeIDE 上使用 nucleo-f446re 开发板。在经历了很多在线讲座之后,例如我能够理解,如果我必须初始化一个 GPIO 引脚,我必须使用以下代码序列,如下所示:
int main(void)
{
HAL_Init();
SystemClockConfig();
GPIO_Init(); // High Level GPIO Initialization
while(1);
return 0;
}
void GPIO_Init(void)
{
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef ledgpio;
ledgpio.Pin = GPIO_PIN_5;
ledgpio.Mode = GPIO_MODE_OUTPUT_PP;
ledgpio.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA,&ledgpio);
}
void SystemClockConfig(void)
{
}
Run Code Online (Sandbox Code Playgroud)
如GPIO_Init函数所示,使用了一系列API和Handler函数。我的问题是我应该继续记住使用的 API 和处理程序的顺序,并为其他外设(如定时器、Uart、CAN、PWM 等)做类似的事情,还是有其他方法?另外,如果我使用其他一些微控制器,用于上述同一事物的 API 的顺序是否会相似或有很大不同?请指导。
我想在 STM32 上使用 CMSIS 启动项目。网上一搜,没找到具体的教程。有些使用 SPL 开始项目(ST 已停止使用)。我想要一个在 stm32cube 上学习 CMSIS 的资源。
如果有人帮助我,我会很高兴。
问候
microcontroller ×10
c ×7
embedded ×5
stm32 ×2
arm ×1
avr ×1
bootloader ×1
cmsis ×1
i2c ×1
int ×1
interrupt ×1
pic ×1
stm32cubemx ×1
temperature ×1
uart ×1