(一)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()...







