==注意==:以下配置均基于STM32 F407ZG。如果不使用定时器,则请不要导入
/core/sys_func.c
和sys_func.h
。
Debug
: Serial WireHSE
: Crystal/Ceramic ResonatorHSE Input frequency
: 8MHzPLL Source Mux
: HSESystem Clock Mux
: PLLCLKHCLK(MHz)
: 168Connectivity/USART1/Mode
Mode
: AsynchronousConnectivity/USART1/Configuration/NVIC Settings
USART1 global interrupt
: ✔Connectivity/USART1/Configuration/DMA Settings
Add
添加USART1_RX
Mode
: Circular
Add
添加USART1_TX
System Core/NVIC/Configuration
USART1 global interrupt
Preemption Priority
: 4==注意==:根据主控板PCB的外设分配情况和使用需求决定使用哪个UART。
Connectivity/CAN1/Mode
Activated
: ✔Connectivity/CAN1/Configuration/Parameter Settings
Time Quanta in Bit Segment 2
: 4 TimesTime Quanta in Bit Segment 1
: 9 TimesPrescaler(for Time Quantum)
: 3Automatic Bus-Off Management
: EnableTransmit Fifo Priority
: EnableConnectivity/CAN1/Configuration/NVIC Settings
CAN1 RX0 interrupts
: ✔System Core/NVIC/Configuration
CAN1 RX0 interrupts
Preemption Priority
: 3==注意==:根据主控板PCB的外设分配情况和使用需求决定使用哪个CAN。
进入Project Manager
Minimum Heap Size
: 0x1000Minimum Stack Size
: 0x1200Generate peripheral initialization as a pair of '.c/.h' files per peripheral
: ✔在工程中加入所需模块的源文件(*.c)和头文件(*.h), 基本的模块包括:
在main.c文件中添加代码:
包含头文件:
/* USER CODE BEGIN Includes */
#include "simplelib.h"
/* USER CODE END Includes */
外设初始化完成后,进行simplelib初始化:
/* USER CODE BEGIN 2 */
SimpleLib_Init(&huart1, &hcan1);
/* USER CODE END 2 */
SimpleLib_Init()
的两个参数分别是simplelib会用到的uart和can
在while循环中调用simplelib处理函数:
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
SimpleLib_Run();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
在stm32f4xx_it.c文件中添加代码:
包含头文件:
/* USER CODE BEGIN Includes */
#include "simplelib.h"
/* USER CODE END Includes */
串口中断服务程序中调用空闲中断处理函数:
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0 */
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET)
{
HAL_UART_IDLECallback(&huart1);
return ;
}
/* USER CODE END USART1_IRQn 0 */
HAL_UART_IRQHandler(&huart1);
/* USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
注意:添加的代码要放在
HAL_UART_IRQHandler
之前。
在cmd_func.c
的CMD_FuncInit()
函数中注册自定义函数,例如
void CMD_FuncInit(void)
{
CMD_Add("hello", "just", cmd_hello_func);
// 以下为自定义代码,配置时无需添加
CMD_Add("ChangePosMode", "", CMD_ChangePosMode);
CMD_Add("ChangeCtrlMode", "", CMD_ChangeCtrlMode);
}
在can_func.c的CAN_AcceptID_Std
数组中添加希望接收的CAN报文ID,否则将会被过滤器过滤。
在can_func.c
的CAN_FuncInit()
函数中注册自定义回调函数,例如
void CAN_FuncInit()
{
// 以下为自定义代码,配置时无需添加
CAN_CallbackAdd(324, CAN_Callback_Handle_Rocker);
CAN_CallbackAdd(325, CAN_Callback_Handle_Button);
CAN_CallbackAdd(0x281, CAN_Callback_DJI_ReadInfo);
CAN_CallbackAdd(0x282, CAN_Callback_DJI_ReadAllPosInfo);
}
simplelib_cfg.h
中注释/取消注释相应的宏来启用/关闭一些功能。/module/toolBoxScope.h
中修改TOOLBOXSCOPE_UART宏,对应希望配置的uart。Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )