HAL串口中断
HAL串口中断1.每次使用串口中断前必须初始化一下1HAL_UART_Receive_IT(&huart1, (uint8_t *)RxBuffer,LENGTH);//指定缓冲区以及触发中断的长度 ==每次中断后都得在用一次该语句,不然就只能触发一次中断,第一次中断前初始化时也要写这句== 2.串口发送函数12HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) 功能:串口发送指定长度的数据。如果超时没发送完成,则不再发送,返回超时标志(HAL_TIMEOUT)。 参数: UART_HandleTypeDef *huart UATR的别名 如 : UART_HandleTypeDef huart1; 别名就是huart1*pData 需要发送的数据Size 发送的字节数Timeout ...
旅游机器人赛后总结
旅游机器人赛后总结1.硬件介绍1.主控:STM32F103ZET6 2.用到的传感器: a.8路灰度传感器 b.光电传感器 c.MPU6050 d.色标传感器 3.小车结构: ...
(四)串口
(四)串口一、MSP430单片机串口概述MSP430具有2个串口,分别为USCI_A0和USCI_A1。 USCI_A0_BASE:P3.3, P3.4 = USCI_A0 TXD/RXD (板上空闲的) USCI_A1_BASE:P4.4, P4.5 = USCI_A1 TXD/RXD (USB是该串口) 二、串口相关函数(1)UART配置和控制的相关函数 1234567891011121314USCI_A_UART_init(uint16_t baseAddress, USCI_A_UART_initParam ∗param)//初始化函数USCI_A_UART_enable(uint16_t baseAddress)//使能UART模块USCI_A_UART_disable(uint16_t baseAddress)//失能UART模块USCI_A_UART_setDormant(uint16_t baseAddress)//将UART模块设置为休眠模式USCI_A_UART_resetDormant(uint16_t...
(一)GPIO
(一)GPIO一、MSP430单片机端口概述 (1)端口P1和P2 P1和P2端口具有中断能力。从P1和P2端口的各个I/O引脚引入的中断可以独立地被使能,并且被设置为上升沿或者下降沿触发中断。所有P1端口的I/O引脚的中断都来源于同一个中断向量PORT1_VECTOR。同理,P2端口的中断源都来源于另一个中断向量PORT2_VECTOR。 ...
FreeRTOS_移植
FreeRTOS(0)移植1.在文件根目录下创建Freertos文件夹,把源码拷贝 2.在Keil中创建三个文件夹,分别添加.c和.h 其中port.c 如果用的编译器version5,从RVDS文件夹添加。如果用的version 6,从GCC添加 头文件只用选3个文件夹 3.由于命名冲突,注释掉stm32f4xx_it.c中 void SVC_Handler(void) void PendSV_Handler(void)这两个函数 4.修改systic_Handler函数 12345678910111213void SysTick_Handler(void){ /* USER CODE BEGIN SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */ HAL_IncTick(); /* USER CODE BEGIN SysTick_IRQn 1 */ ...
HAL库外设配置方法
STM32 HAL各种外设配置方法(不包括CubeMX)1.外部中断只需要在CubeMX里对IO配置,自己重写一下回调函数就行了 123456789101112131415161718192021void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(GPIO_Pin==KEY0_Pin) { HAL_Delay(10);/* 延时一小段时间,消除抖动 */ if(HAL_GPIO_ReadPin(KEY0_GPIO_Port,KEY0_Pin)==GPIO_PIN_RESET) flag=0; } else if(GPIO_Pin==KEY2_Pin) { HAL_Delay(10);/* 延时一小段时间,消除抖动 */ if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin)==GPIO_PIN_RESET) flag=1; } else...
FreeRTOS_信号量
FreeRTOS(4)信号量 信号量API函数实际上都是宏,它使用现有的队列机制。这些宏定义在semphr.h文件中。如果使用信号量或者互斥量,需要包含semphr.h头文件。 一、创建信号量 ==二进制信号量==创建实际上是直接使用通用队列创建函数xQueueGenericCreate()。创建二进制信号量API接口实际上是一个宏,定义如下: 123456789#define xSemaphoreCreateBinary() \ xQueueGenericCreate( \ ( UBaseType_t ) 1, \ semSEMAPHORE_QUEUE_ITEM_LENGTH, \ NULL, \ NULL, \ ...
FreeRTOS_任务状态
FreeRTOS(2)任务状态除了运行状态之外的状态统称为非运行状态。因为 FreeRTOS 是为单CPU设计的系统,在任何时刻最多只能允许一个任务处在运行状态,哪怕看起来好像有多个任务同时在运行——这只是多个任务不停地切换带来的效果。当一个任务从运行状态切换到非运行状态时,执行时的现场——CPU寄存器被保存在任务的私有堆栈中;在重新回到运行状态时,再从堆栈中恢复之间保存的寄存器。这是任务调度的最基本功能。 1.就绪的任务 ==FreeRTOS 任务的就绪状态表示任务目前没有被执行,但随时可以被执行。当下一次任务切换时机到来时,FreeRTOS 将从就绪任务的列表中选择优先级最高的任务,切换成运行状态。== 任务优先级是任务的一个属性,FreeRTOS 用整型数表示优先级,最低优先级为0, 最高为 configMAX_PRIORITIES 宏定义的值减去1. 创建任务的时候需要指定一个优先级,在创建之后也可以再通过 vTaskPrioritySet()...








