20230426 cortex-A7 cortex-M4核综合实验

news/2024/10/18 5:43:46/

cortex-M4核综合实验
1.通过配置开发板LED1/LED2/LED3三盏灯
2.当KEY1/KEY2/KEY3/光电开关/火焰传感器/人体红外中断触发,需要完成以下内容
1)中断触发,在串口工具打印一句话
2)中断触发,对应LED灯状态取反
3.需求:实验中的内容,需要在一个工程下配置,代码编写

usart.h

/* USER CODE BEGIN 0 */
int fputc(int ch,FILE *stream){while(!(huart4.Instance->ISR & (0X1 << 7)));huart4.Instance->TDR=ch;if(ch == '\n'){while(!(huart4.Instance->ISR & (0X1 << 7)));huart4.Instance->TDR='\r';}return ch;
}
/* USER CODE END 0 */

gpio.c


/* USER CODE BEGIN 2 */
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{/* Prevent unused argument(s) compilation warning */switch(GPIO_Pin){case GPIO_PIN_15://光电开关HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);printf("led3####\n\r");break;case GPIO_PIN_5://火焰HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);printf("led2####\n\r");break;case GPIO_PIN_12:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);printf("led1####\n\r");break;}   
}
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{/* Prevent unused argument(s) compilation warning */switch(GPIO_Pin){case GPIO_PIN_9:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);printf("led3####\n\r");break;case GPIO_PIN_7:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);printf("led2####\n\r");break;case GPIO_PIN_8:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);printf("led1####\n\r");break;}   
}
/* USER CODE END 2 */

cortex-A7核综合实验
实验需求:在串口输入相应的命令,控制对应的硬件进行操作
在串口输入led1on------>板子LED1灯点亮
在串口输入led1off------>板子LED1灯熄灭
在串口输入led2on------>板子LED2灯点亮
在串口输入led2off------>板子LED2灯熄灭
在串口输入led3on------>板子LED3灯点亮
在串口输入led3off------>板子LED3灯熄灭

main.c

#include "led.h"#include "uart4.h"extern void printf(const char *fmt, ...);void delay_ms(int ms){int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 1800; j++);}typedef struct{char cmd_arr[20];	  //命令字符串gpio_t *gpiox;		  //gpio组号unsigned int pin;	  //对应引脚编号gpio_status_t status; //对应引脚状态void (*gpio_write)(gpio_t *gpiox, unsigned int pin, gpio_status_t status);} cmd_t;cmd_t arr[6] = {[0] = {.cmd_arr = "led1on",.gpiox = GPIOE,.pin = GPIO_PIN_10,.status = GPIO_SET_T,.gpio_write = hal_gpio_write,},[1] = {.cmd_arr = "led1off",.gpiox = GPIOE,.pin = GPIO_PIN_10,.status = GPIO_RESET_T,.gpio_write = hal_gpio_write,},[2] = {.cmd_arr = "led2on",.gpiox = GPIOF,.pin = GPIO_PIN_10,.status = GPIO_SET_T,.gpio_write = hal_gpio_write,},[3] = {.cmd_arr = "led2off",.gpiox = GPIOF,.pin = GPIO_PIN_10,.status = GPIO_RESET_T,.gpio_write = hal_gpio_write,},[4] = {.cmd_arr = "led3on",.gpiox = GPIOE,.pin = GPIO_PIN_8,.status = GPIO_SET_T,.gpio_write = hal_gpio_write,},[5] = {.cmd_arr = "led3off",.gpiox = GPIOE,.pin = GPIO_PIN_8,.status = GPIO_RESET_T,.gpio_write = hal_gpio_write,},};//字符串比较函数int strcmp(const char *str1, const char *str2){while (*str1 && *str2 && *str1 == *str2){str1++;str2++;}return *str1 - *str2;}//查找命令的cmd_t *find_cmd(const char *buffer){int i;for (i = 0; i < 6; i++){if (strcmp(arr[i].cmd_arr, buffer) == 0){return arr + i;}}return 0;}int main(){//LED123灯初始化hal_init_led123();//UART初始化hal_uart_init();char buf[50];int len = 50;while (1){hal_recv_string(buf, len); //用来接收串口工具输入的字符串cmd_t *p = find_cmd(buf);if (p == 0){printf("cmd not found\n\r");}else{p->gpio_write(p->gpiox, p->pin, p->status);}}return 0;}

http://www.ppmy.cn/news/191380.html

相关文章

redisson 随笔 0-入门

0. 虽说时运不佳&#xff0c;仍欲提桶跑路 分布式锁的常见实现方案 常用锁的用例 runoob Lua教程 对于分布式锁的实现方案&#xff0c;本文如标题所言&#xff0c;简单梳理了redisson的实现方案 redisson 也是基于redis的多个命令组合来实现的&#xff0c;为保证执行多个命…

福昕阅读器分屏

在阅读PDF文档的时候&#xff0c;经常会碰到阅读上面几页内容&#xff0c;和下面几页解释需要对照着一起看的情况&#xff0c;总是上下来回滚动鼠标很麻烦&#xff01; 福昕阅读器的【分屏功能】完美解决这个问题。&#xff08;备注&#xff1a;目前我所知&#xff0c;文电通阅…

c++ 开源pdf文件阅读器

推荐一款开源的c版本开源的pdf阅读器&#xff0c;可以搜索&#xff1a;sumatrapdf 本人使用的是vs2013编译通过&#xff0c;编译之后的exe启动之后的效果如下所示&#xff1a; 可以放大页面、缩小页面、另存为pdf、另存为txt文件等等操作&#xff0c;打开文档不卡顿&#xff0…

PDF阅读器背景设置为护眼豆沙色(福昕)

福昕PDF阅读器背景设置为豆沙色 原创不易&#xff0c;路过的各位大佬请点个赞 1.选择文件—>偏好设置—>访问—>改变文档颜色—>自定义颜色&#xff0c;可以改为豆沙绿&#xff0c;色调饱和度亮度分别为85,90,205 2&#xff0c;设置视图菜单可以实现连续滚动以及拆…

excel阅读器Android,Excel阅读器

Excel阅读器是一款集阅读和编辑于一体的多功能阅读器&#xff0c;专门为excel文本文档设计的。下面是它的便捷功能 软件特色 1.小巧快速&#xff0c;功能更全面&#xff0c;支持查看阅读、修改、编辑、保存等功能&#xff0c;不用下载其他任何工具都可以&#xff0c;内容不限&a…

福昕阅读器 PDF 文档基本操作

福昕阅读器 PDF 文档基本操作 1. 转至 PDF 顶部 快捷键&#xff1a;Home. 2. 转至 PDF 顶部 快捷键&#xff1a;End. 3. 打开超链接 文本选择工具 -> 手形工具 (Hand Tool) -> 点击超链接 4. 福昕阅读器 同时在多个窗口中打开多个文件 文件 -> 偏好设置 -> …

OFD板式文档阅读器

OFD阅读器 Windows 32位 64位 更新时间(20210328) 点击下载 1. 阅读器开发语言为C/C语言、具有完全自主产权、可以根据你的需求快速定制开发。本阅读器还在开发完善阶段&#xff0c;如有任何问题&#xff0c;可以联系我; 2. 板式文档(OFD/PDF)核心排版功能支持各种平台(Wind…

评测三款最流行的txt阅读器

哪款txt阅读器读小说最好用&#xff1f;我把网上呼声最高的三款下载试用了一下&#xff0c;以下是体验&#xff1a; 1.Neat Reader Neat Reader是一款比较轻量级的阅读器&#xff0c;可以跨平台使用的TXT阅读器&#xff0c;在手机端、PC端都可以使用&#xff0c;而且支持Andro…