【无标题】

小熊派(2)

GPIO中断,主要学习的是通过f1和f2两个按钮进行灯泡亮灭的控制。

注意:F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。
改变触发模式代码(实现的效果是第一次按f2小灯灭,之后再按就按f2就没用了):

static void F1_Pressed(char *arg) {
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
printf("This is F1_Pressed\r\n");
GpioSetIsrMode(WIFI_IOT_IO_NAME_GPIO_11,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH);
}
static void F2_Pressed(char *arg) {
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0);
printf("This is F2_Pressed\r\n");
GpioSetIsrMask(WIFI_IOT_IO_NAME_GPIO_12,1);
}

扩展程序运行截图:在这里插入图片描述

ADC来获取引脚电压值

ADC借口作用:根据输入参数从指定的ADC通道读取一段采样数据
核心函数(进行数据读取和相应的平均操作):

/***** 获取电压值函数 *****/
static float GetVoltage(void)
{
unsigned int ret;
unsigned short data;
ret = AdcRead(WIFI_IOT_ADC_CHANNEL_5, &data, WIFI_IOT_ADC_EQU_MODEL_8, 
WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0xff);
if (ret != WIFI_IOT_SUCCESS)
{
printf("ADC Read Fail\n");
}
return (float)data * 1.8 * 4 / 4096.0;
}

成功截图:在这里插入图片描述

版权声明:本文为CSDN博主「恕君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qinlaiensmile/article/details/122816370

使用正点原子阿波罗H743开发板遇到了程序不能下载的问题,这里是我的解决方法。
1.stm32H7系列暂时没有(2022年)好的下载软件,因此只能使用stlink进行下载
2.(注意)正因为错误使用flymcu下载程序,导致了这个bug
3.使用正确的芯片驱动和项目例程。H743非正点原子视频课件所使用的F429,虽然HAL库几乎通用,但只限于代码层面上。
4.使用stlink进行全片擦除就能解决这个bug。
5.(解决方法)MDK->魔术棒->Utilities->Settings->Download Function ->Erase Full Chip(选择)

版权声明:本文为CSDN博主「DrawTree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40593880/article/details/122593523

NRF52832烧录程序之后开发板没有运行问题

环境

ubantu-linux系统
VsCode环境

问题原因:

在使用一块新的芯片时需要进行烧录固件

解决办法

make erase 将原来芯片中的程序擦除
make flash_softdevice 对芯片进行烧录固件
make flash 然后再给程序进行烧录

版权声明:本文为CSDN博主「qq_47142657」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_47142657/article/details/122853868

一、前言

二、CLion介绍

三、CLion安置过程

1、CLion下载

2、安装配置arm-none-eabi-gcc

3、安装配置OpenOCD

四、创建工程点亮LED

1、题目要求

2、创建工程

3、CubeMX工程导出

4、配置CLion工程文件

五、效果展示

六、总结

参考资料

一、前言

通过学习嵌入式我发现咱们运用Keil来编译工程文件并烧录好像存在很多缺点。
例如:
Keil的编译界面十分老旧对于用惯了新型IDE的我们来说很不友好,看起来好像是上个世纪的产物。
可能大家跟我一起做实验的时候会发现,咱们用Keil对于一些代码量“较大”的工程进行编译的时候需要大量的时间,这里的代码量“较大”也只是相对于咱们的基础工程而言。
其实Keil还是有其优点的,比如在Keil中进行仿真运行可以对咱们的工程进行逻辑分析,非常的方便。

在之前的学习与实验中我使用的一直是Keil这款老软件,直到最近老师突然告诉我们最新的CLion可以用来代替Keil用来对我们的工程进行编译并生成HEX文件,beautiful!

二、CLion介绍
Clion 是一款专门开发 C 以及 C++ 所设计的跨平台的 IDE。它是以 IntelliJ 为基础设计的,包含了许多智能功能来提高开发人员的生产力。
这种强大的 IDE 帮助开发人员在 Linux、OSX 和 Windows 上来开发 C/C++ ,同时它还能使用智能编辑器来提高代码质量、自动代码重构并且深度整合 Cmake 编译系统,从而提高开发人员的工作效率。
CLion 支持 GCC、clang、MinGW、Cygwin 编译器以及 GDB 调试器。提供对 Cmake 支持:包含自动处理 Cmake changes 和 Cmake Targets,更新新创建的 C/C++ 档案以及 Cmake Cache 编辑器。

三、CLion安置过程
1、CLion下载
刚刚为大家安利了这么一款软件,肯定就有小伙伴要问了:这么好个东西在哪里能购买到呢!
告诉大家一个好消息,这么好的东西咱们在官网上就能点我直接下载!
在这里插入图片描述
点击下载好的CLion-2021.3.exe准备进行安装
就正常安装就可以了

2、安装配置arm-none-eabi-gcc

Windows点击,进入网页之后找到gcc-arm-none-eabi-10.3-2021.10-win32.zip点击下载,也可以下载.exe,但是这里建议下载压缩包。

在这里插入图片描述
下载完成之后需要咱们先解压,解压之后我们要注意bin文件夹的路径,需要我们将bin文件夹的路径添加到环境变量中
在这里插入图片描述
添加环境变量:
在这里插入图片描述
添加好以后我们来测试一下是否安装成功,Win+R键输入cmd调出命令行,输入arm-none-eabi-gcc -v,弹出如下图所示信息即为安装成功:
在这里插入图片描述
3、安装配置OpenOCD
点击进入官网下载,下载最新版即可:
在这里插入图片描述
下载完之后,解压路径我们一定要记住:
在这里插入图片描述
打开我们的CLion,点击File-Settings-Build-Embedded Development,进行如图所示配置,将openocd.exe和STM32CubeMX.exe文件进行配置:
在这里插入图片描述
点击“OK”即可
到此,咱们的安装和配置工作就完成了,接下来就需要咱们创建工程了。

四、创建工程点亮LED

1、题目要求

安装Clion2021,采用一套新的嵌入式软件开发工具包(替代Keil),完成stm32F103 点亮LED的程序。

2、创建工程

打开CLion创建一个新的工程,选择好存放路径点击Create
在这里插入图片描述
等待调用CubeMX
在这里插入图片描述
CLion调用CubeMX创建好初始的.ioc 文件之后需要我们对其进行配置,点击Open with STM32CubeMX
在这里插入图片描述
由于这个ioc文件是CLion调用CubeMX直接生成的,其默认的芯片是F030F4Px,所以需要我们改成我们需要用的芯片,点击左上角进入芯片选择。
在这里插入图片描述
选择好芯片之后咱们直接进行配置,配置SYS

在这里插入图片描述
配置RCC
在这里插入图片描述
由于我们要点灯,我的最小系统板上自带的LED为PC13,所以直接配置PC13为输出即可
在这里插入图片描述

3、CubeMX工程导出

我们的CubeMX工程已经配置好了,现在需要我们导出,但是导出需要注意的点特别多,如下图一样配置
在这里插入图片描述
这里需要注意的是,CubeMX中的工程名称需要和我们前面的创建CLion创建的文件名称相同,并且大家可以打开自己存放CLion工程的文件夹,可以看到在该文件夹中有一个ioc文件
在这里插入图片描述
此时我们选择的CubeMX工程存放路径需要在该文件夹的上一级,大家可以参考我的上面两张图对比一下存储路径一定不要搞错了!!!

大家点击生成代码如果弹出如下图所示警告则代表成功,表示的是咱们现在创建的文件把之前自动生成的ioc文件覆盖了,一直点击“Yes”即可
在这里插入图片描述

4、配置CLion工程文件

回到CLion中,会弹出以下窗口
在这里插入图片描述
选择“stm32f103c8_blue_pill.cfg”,这里每个人的顺序可能不一样,有点难找千万别选错了。

注:可能有些小伙伴回到CLion界面以后,没有弹出该窗口。建议大家点击“Core”->“Src”->“main.c”,找到主函数,此时应该就可以弹出该窗口了,如果还没有的话建议回到CubeMX重新生成一遍代码即可。

现在咱们的工程基本配置完毕,由于我们需要点灯,所以我们要在main.c文件的while循环中添加闪灯代码:

while (1)
  {
    /* USER CODE END WHILE */
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
    HAL_Delay(500);
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
    HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }

紧接着点击咱们右上角的“小榔头”进行编译
在这里插入图片描述
编译后无报错则成功
在这里插入图片描述
由于我没有ST-link,所以借助FlyMCU进行烧录,打开FlyMCU找到咱们存储工程的文件夹,点击cmake-build-debug就可以看到hex文件
在这里插入图片描述
五、效果展示
在这里插入图片描述

六、总结

这次的实验跟我们以前做的实验不一样,因为我觉得这次我是真真正正的自我亲自去完成。所以是我觉得这次实验最宝贵,最深刻的。就是实验的过程全是我们学生自我动手来完成的,这样,我们就必须要弄懂实验的原理。在那里我深深体会到理论对实践的指导作用:弄懂实验原理,并且体会到了实验的操作本事是靠自我亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。
做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做。做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛。

参考链接:
https://blog.csdn.net/qq_43279579/article/details/110308101

https://blog.csdn.net/liwei16611/article/details/88545248

https://my.oschina.net/mizhinian/blog/4472814

https://blog.csdn.net/u011784994/article/details/53157614

https://blog.csdn.net/m0_58892312/article/details/121866325

https://blog.csdn.net/qq_60678931/article/details/121866156

版权声明:本文为CSDN博主「王权那个富贵儿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/W2020492669/article/details/122327954

博客第一篇:Arduino 蓝牙小车代码

//电机设置
#define leftA_PIN 5
#define leftB_PIN 6
#define righA_PIN 9
#define righB_PIN10
//
void motor_pinint();//引脚初始化
void forward();//前进
void back();//后退
void turnleftorigin();//原地左转
void turnrightorigin();//原地右转
void turnleftforword();//左前转弯
void turnrightforword();//右前转弯
void _stop();//暂停
/
/
//蓝牙遥控
int receive;
void reve(void);
/函数/
void setup()
{
Serial.begin(9600);//串口波特率9600 motor_pinint();
}
void loop()
{
reve();
}
void reve(void)
{
receive=Serial.parseInt();
if(receive7)
{
forward();
delay(500);_stop();
}
//前进
else if(receive
6)
{
back();
delay(500);_stop();
}
//后退
else if(receive8)
{
turnleftorigin(); delay(250);_stop();
}
//原地左转
else if(receive
9)
{
turnrightorigin(); delay(250);_stop();
}
//原地右转
else if(receive3)
{
turnleftforword(); delay(500);_stop();
}
//左前转弯
else if(receive
2)
{
turnrightforword();
delay(500);_stop();
}
//右前转弯
else if(receive==1)
{
_stop();
delay(500);_stop();
}
//暂停
}
/
/
//电机引脚初始化
void motor_pinint()
{
pinMode(leftA_PIN,OUTPUT);
//设置引脚为输出引脚 pinMode(leftB_PIN,OUTPUT);
//设置引脚为输出引脚 pinMode(righA_PIN,OUTPUT);
//设置引脚为输出引脚 pinMode(righB_PIN,OUTPUT);
//设置引脚为输出引脚
}
/
/
// 函数forward功能:控制小车前进void forward()
{
analogWrite(leftA_PIN,180); analogWrite(leftB_PIN,0);
//左轮前进 analogWrite(righA_PIN,180); analogWrite(righB_PIN,0);
//右轮前进 }
//
//函数back功能:控制小车后退void back()
{
analogWrite(leftA_PIN,0); analogWrite(leftB_PIN,180);
//左轮后退 analogWrite(righA_PIN,0); analogWrite(righB_PIN,180);
//右轮后退
}
//
//函数turnleftorigin功能:控制小车原地左转void turnleftorigin()
{
analogWrite(leftA_PIN,0); analogWrite(leftB_PIN,120);
//左前,左后两个轮子后转 analogWrite(righA_PIN,120);
analogWrite(righB_PIN,0);
//右前,右后两个轮子前转
}
/
/
//函数turnrightorigin功能:控制小车原地右转
void turnrightorigin()
{
analogWrite(leftA_PIN,120); analogWrite(leftB_PIN,0);
//左前,左后两个轮子前转 analogWrite(righA_PIN,0); analogWrite(righB_PIN,120);
//右前,右后两个轮子后转
}
/
/
//函数turnleftforword功能:控制小车左前转弯
void turnleftforword()
{
analogWrite(leftA_PIN,120); analogWrite(leftB_PIN,0);
//左轮缓慢前进 analogWrite(righA_PIN,200); analogWrite(righB_PIN,0);
//右轮快速前进
}
/
*************************/
//函数turnrightforword功能:控制小车右前转弯
void turnrightforword()
{
analogWrite(leftA_PIN,200); analogWrite(leftB_PIN,0);
//左轮快速前进 analogWrite(righA_PIN,120); analogWrite(righB_PIN,0);
/ /右轮缓慢前进
}
/ *************************************/
//函数stop功能:控制小车停止
void _stop()
{
analogWrite(leftA_PIN,0); analogWrite(leftB_PIN,0);
//左轮静止不动
analogWrite(righA_PIN,0); analogWrite(righB_PIN,0);
//右轮静止不动
}
代码亲测有效😃,如果觉得有用的话,点赞,加关注哦,你的鼓励,就是我不断更新的动力

版权声明:本文为CSDN博主「小鱼爱arduino」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_63524713/article/details/122501656

使用正点原子阿波罗H743开发板遇到了程序不能下载的问题,这里是我的解决方法。
1.stm32H7系列暂时没有(2022年)好的下载软件,因此只能使用stlink进行下载
2.(注意)正因为错误使用flymcu下载程序,导致了这个bug
3.使用正确的芯片驱动和项目例程。H743非正点原子视频课件所使用的F429,虽然HAL库几乎通用,但只限于代码层面上。
4.使用stlink进行全片擦除就能解决这个bug。
5.(解决方法)MDK->魔术棒->Utilities->Settings->Download Function ->Erase Full Chip(选择)

版权声明:本文为CSDN博主「DrawTree」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40593880/article/details/122593523

小熊派(2)

GPIO中断,主要学习的是通过f1和f2两个按钮进行灯泡亮灭的控制。

注意:F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。
改变触发模式代码(实现的效果是第一次按f2小灯灭,之后再按就按f2就没用了):

static void F1_Pressed(char *arg) {
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 1);
printf("This is F1_Pressed\r\n");
GpioSetIsrMode(WIFI_IOT_IO_NAME_GPIO_11,WIFI_IOT_INT_TYPE_EDGE,WIFI_IOT_GPIO_EDGE_RISE_LEVEL_HIGH);
}
static void F2_Pressed(char *arg) {
(void)arg;
GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_2, 0);
printf("This is F2_Pressed\r\n");
GpioSetIsrMask(WIFI_IOT_IO_NAME_GPIO_12,1);
}

扩展程序运行截图:在这里插入图片描述

ADC来获取引脚电压值

ADC借口作用:根据输入参数从指定的ADC通道读取一段采样数据
核心函数(进行数据读取和相应的平均操作):

/***** 获取电压值函数 *****/
static float GetVoltage(void)
{
unsigned int ret;
unsigned short data;
ret = AdcRead(WIFI_IOT_ADC_CHANNEL_5, &data, WIFI_IOT_ADC_EQU_MODEL_8, 
WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0xff);
if (ret != WIFI_IOT_SUCCESS)
{
printf("ADC Read Fail\n");
}
return (float)data * 1.8 * 4 / 4096.0;
}

成功截图:在这里插入图片描述

版权声明:本文为CSDN博主「恕君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qinlaiensmile/article/details/122816370

NRF52832烧录程序之后开发板没有运行问题

环境

ubantu-linux系统
VsCode环境

问题原因:

在使用一块新的芯片时需要进行烧录固件

解决办法

make erase 将原来芯片中的程序擦除
make flash_softdevice 对芯片进行烧录固件
make flash 然后再给程序进行烧录

版权声明:本文为CSDN博主「qq_47142657」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_47142657/article/details/122853868

生成海报
点赞 0

qq_47142657

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

基于51单片机制作的蓝牙小车

基于51单片机制作的蓝牙小车 这是本人(小菜鸡一枚)于大一寒假所做的小玩意,以展现我这几月所学,这也是我发的第一篇博客,准确来说这可能是我搞51单片机的巅峰所做了&#xff

STM32+HC-05蓝牙模块学习与使用

HC-05蓝牙串口通信 HC05模块是一款高性能主从一体蓝牙串口模块,是一种集成蓝牙功能的PCBA板,用于短距离无线通信,十分方便。 从某宝商家那里可以看到,蓝牙可以使用多种方法使用&

ESP32 LVGL8.1 实现太空人显示

注:本博客作为学习笔记,有错误的地方希望指正 一、ESP32 LVGL工程配置 首先要通过液晶屏显示太空人,我们这里主要有两种方式可以实现,第一种直接使用厂家只带的液晶屏幕驱动去实现图