实验原理:

  开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动,

CH340的TXD连接STM32的GPIO(PXC7),CH340的RXD连接STM32的

GPIO(PC6),通过串口发送命令控制LED的亮灭。串口命令如下:

LED_RED_ON\CR\LF---------------------LED红灯亮
LED_RED_OFF\CR\LF-------------------LED红灯灭
LED_BLUE_ON\CR\LF-------------------LED蓝灯亮
LED_BLUE_OFF\CR\LF------------------LED蓝灯灭
LED_GREEN_ON\CR\LF-----------------LED绿灯亮
LED_GREEN_OFF\CR\LF---------------LED绿灯灭

实验现象:

  打开串口软件通过串口输入相应的命令,控制LED的状态。

int main(void)
{ /* USER CODE BEGIN 1 */
int i;
char buffer[];
/* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */
SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART6_UART_Init(); /* USER CODE BEGIN 2 */
usart6.initialize(); //´®¿Ú²¨ÌØÉèÖÃ
usart6.printf("Hello, I am iCore4!\r\n"); //´®¿ÚÐÅÏ¢Êä³ö /* USER CODE END 2 */ /* Infinite loop */
/* USER CODE BEGIN WHILE */
while ()
{
/* USER CODE END WHILE */ /* USER CODE BEGIN 3 */
if(usart6.receive_ok_flag){ //½ÓÊÕÍê³É
usart6.receive_ok_flag = ;
for(i = ;i < ;i++){
buffer[i] = tolower(usart6.receive_buffer[i]);
} if(memcmp(buffer,"led_red_on",strlen("led_red_on")) == ){
LED_RED_ON;
usart6.printf("ok!\r\n");
}
if(memcmp(buffer,"led_red_off",strlen("led_red_off")) == ){
LED_RED_OFF;
usart6.printf("ok!\r\n");
}
if(memcmp(buffer,"led_green_on",strlen("led_green_on")) == ){
LED_GREEN_ON;
usart6.printf("ok!\r\n");
}
if(memcmp(buffer,"led_green_off",strlen("led_green_off")) == ){
LED_GREEN_OFF;
usart6.printf("ok!\r\n");
}
if(memcmp(buffer,"led_blue_on",strlen("led_blue_on")) == ){
LED_BLUE_ON;
usart6.printf("ok!\r\n");
}
if(memcmp(buffer,"led_blue_off",strlen("led_blue_off")) == ){
LED_BLUE_OFF;
usart6.printf("ok!\r\n");
}
}
}
/* USER CODE END 3 */ }

源代码下载链接:

链接:http://pan.baidu.com/s/1pLbnxqV 密码:a849

iCore4链接:

【iCore4 双核心板_ARM】例程四:USART实验——通过命令控制LED的更多相关文章

  1. 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯

    实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...

  2. 【iCore4 双核心板_ARM】例程一:ARM驱动三色LED

    实验原理: 通过STM32的三个GPIO驱动一个三色LED,引脚PB2接红色LED(ARM_LEDR), 引脚PA9接蓝色LED(ARM_LEDB),引脚PA10接绿色LED(ARM_LEDG),   ...

  3. 【iCore4 双核心板_ARM】例程三十四:U_DISK_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. 3.按下按键上电或写程序将进行升 ...

  4. 【iCore4 双核心板_ARM】例程二十四:LWIP_DHCP实验——动态分配IP地址

    实验现象: 核心代码: int main(void) { system_clock.initialize(); led.initialize(); adc.initialize(); delay.in ...

  5. 【iCore4 双核心板_ARM】例程十四:FATFS实验——文件操作

    实验现象: 核心代码: int main(void) { int i,j; FIL file; FATFS fatfs; static FRESULT res; unsigned ]; unsigne ...

  6. 【iCore4 双核心板_ARM】例程三十三:SD_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. 3.按下按键上电或写程序将进行升 ...

  7. 【iCore4 双核心板_ARM】例程三十二:UART_IAP_ARM实验——更新升级STM32

    实验现象及操作说明: 1.本例程共有两个代码包,APP和IAP,IAP程序功能实现将APP程序升级至STM32中. 2.直接上电或烧写程序将执行升级的APP应用程序. BIN升级文件产生方法: 1.编 ...

  8. 【iCore4 双核心板_ARM】例程十五:USB_CDC实验——高速数据传输

    实验方法: 1.安装USB CDC驱动,驱动安装方法参考例程包中安装方法文档. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore4 USB-OTG接口与电脑相连. 3.打开上位机 ...

  9. 【iCore4 双核心板_ARM】例程十六:USB_HID实验——双向数据传输

    实验方法: 1.USB_HID协议免驱动,此例程不需要驱. 2.将跳线冒跳至USB_OTG,通过Micro USB 线将iCore4 USB-OTG接口与电脑相连. 3.打开上位机软件usb_hid. ...

随机推荐

  1. windows下redis安装和配置

    windows下redis安装和配置 redis介绍 Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数 ...

  2. Python常用模块--json

    官方解释: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.人类很容易读写.机器很容易解析和生成.它基于 JavaScript编程语言的一部分, 标准ECM ...

  3. 学机器学习,不会数据处理怎么行?—— 一、NumPy详解

    最近学习强化学习和机器学习,意识到数据分析的重要性,就开始补Python的几个科学计算库,并总结到博客中.本篇博客中用到的代码在这里下载. 什么是Numpy? NumPy是Python数值计算最重要的 ...

  4. 华为机型cordova-plugin-image-picker读取图库闪退

    在测试cordova开发的安卓APP过程中,使用$cordovaImagePicker.getPictures(options)获取相册照片时,华为机型总是会闪退. config.xml已经添加了权限 ...

  5. for循环的灵活性

      for循环把初始化.测试和更新组合在一起,其基本形式如下所示: for(初始化:测试条件:更新表达式) { //循环体 }   关键字for后面的圆括号中3个表达式,分别用两个分号隔开:   第一 ...

  6. CocosCreator内置函数实现物体拖动

    通过CocosCreator由内置的cc.Node.EventType.MOUSE_MOVE鼠标(触摸)事件实现,返回参数为鼠标的坐标值. 根据鼠标的x,y实现物体的移动,即将鼠标放置在该节点上,实现 ...

  7. Codeforces Round #519 by Botan Investments

    Codeforces Round #519 by Botan Investments #include<bits/stdc++.h> #include<iostream> #i ...

  8. eclipse和jdk的版本问题,比如printf()出错

    1.右键项目选中properties 2.Java Builder Path >>>Libraries>>>选中JRE Syste Library[jre7]然后r ...

  9. Shell Step by Step (4) —— Cron &amp; Echo

    6.脚本定时任务 # Example of job definition: # .------------------------- minute (0 - 59) # | .------------ ...

  10. C++中int与string的相互转换【转】

    一.int转string 1.c++11标准增加了全局函数std::to_string: string to_string (int val); string to_string (long val) ...