新建工程并进行基础硬件初始化,下边直接上图
选择,GENERATE CODE ,生成代码。在keil mdk中打开工程。
二、UART使用查询方式实现rx和tx
2.1 修改board.c
增加头文件
/**
* 此功能将初始化您的板。
*/
extern void SystemCoreClockUpdate(void);
extern HAL_StatusTypeDef HAL_Init(void);
无效 rt_hw_board_init()
{
//为了和主播生成的代码动画,这里需要使用main.c中调用的两个函数
HAL_Init();
/* 系统时钟更新 */
SystemCoreClockUpdate();
MX_USART1_UART_Init();
/* 系统滴答配置 */
_SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
/* 调用组件板初始值(使用 INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
#万一
#if 已定义(RT_USING_USER_MAIN) && 已定义(RT_USING_HEAP)
rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#万一
}
2.2 修改uart.c
增加头文件的引用
/* 用户代码开始 0 */
#include
/* 用户代码结束 0 */
增加uart.h中添加两个函数的声明
/* 用户代码开始原型 */
字符 rt_hw_console_getchar(void);
void rt_hw_console_output(const char *str);
/* 用户代码结束原型 */
增加uart.h中增加了两个函数的实现在uart.c中
/* 用户代码开始 1 */
字符 rt_hw_console_getchar(void)
{
int ch = -1;
如果 (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET)
{
ch = huart1.Instance->DR & 0xff;
}
别的
{
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE) != RESET)
{
__HAL_UART_CLEAR_OREFLAG(&huart1);
}
rt_thread_mdelay(10);
}
返回 ch;
}
void rt_hw_console_output(const char *str)
{
rt_size_t i = 0,大小 = 0;
字符 a = 'r';
__HAL_UNLOCK(&huart1);
大小 = rt_strlen(str);
for (i = 0; i < 大小; i++)
{
如果 (*(str + i) == 'n')
{
HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);
}
HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
}
}
/* 用户代码结束 1 */
修改main.c,隐藏的:同时循环中必须添加rt_thread_delay(100)函数,否则FISH不会出现,无法显示。
/* 用户代码结束标题 */
/* 包括 ----------------------------------------------- -------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"
/* 私有包含---------------------------------------------- ------------*/
/* 用户代码开始包括 */
#include //自己添加的引用
/* 用户代码结束包括 */
/* 私有 typedef ---------------------------------------------- -------------*/
/* 用户代码开始 PTD */
/* 用户代码结束 PTD */
/* 私有定义---------------------------------------------- --------------*/
/* 用户代码开始 PD */
/* 用户代码结束 PD */
/* 私有宏 ------------------------------- ---------------*/
/* 用户代码开始 PM */
/* 用户代码结束 PM */
/* 私有变量---------------------------------------------- -----------*/
/* 用户代码开始 PV */
/* 用户代码结束 PV */
/* 私有函数原型 --------------------------------------------- --*/
void SystemClock_Config(void);
/* 用户代码开始 PFP */
/* 用户代码结束 PFP */
/* 私人用户代码 --------------------------------------------- ------------*/
/* 用户代码开始 0 */
/* 用户代码结束 0 */
/**
* @brief 应用程序入口点。
* @retval 整数
*/
int main(void)
{
/* 用户代码开始 1 */
/* 用户代码结束 1 */
/* MCU配置---------------------------------------------- ----------*/
/* 重置所有外设,初始化 Flash 接口和 Systick。*/
/* 用户代码开始初始化 */
/* 用户代码结束初始化 */
/* 配置系统时钟 */
SystemClock_Config();
/* 用户代码开始 SysInit */
/* 用户代码结束系统初始化 */
/* 初始化所有配置的外设 */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* 用户代码开始 2 */
/* 用户代码结束 2 */
/* 无限循环 */
/* 用户代码开始时 */
而 (1)
{
/* 用户代码结束时 */
/* 用户代码开始 3 */
rt_thread_mdelay(1000);//必须强制否决者FISH不显示
}
/* 用户代码结束 3 */
}
使用腻子连接一个,FISH成功 界面后记 :在编译过程中出现如下所示:经在RT-螺纹官方技术交流群1里咨询,得到后来的支持,特别感谢黄洋界和杰克为我指点,最后黄洋界的方法是, 在工程栏上那个文件精美,该文件类型不是具体的 选择语言文件
新建工程并进行基础硬件初始化,下边直接上图
选择,GENERATE CODE ,生成代码。在keil mdk中打开工程。
二、UART使用查询方式实现rx和tx
2.1 修改board.c
增加头文件
/**
* 此功能将初始化您的板。
*/
extern void SystemCoreClockUpdate(void);
extern HAL_StatusTypeDef HAL_Init(void);
无效 rt_hw_board_init()
{
//为了和主播生成的代码动画,这里需要使用main.c中调用的两个函数
HAL_Init();
/* 系统时钟更新 */
SystemCoreClockUpdate();
MX_USART1_UART_Init();
/* 系统滴答配置 */
_SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
/* 调用组件板初始值(使用 INIT_BOARD_EXPORT()) */
#ifdef RT_USING_COMPONENTS_INIT
rt_components_board_init();
#万一
#if 已定义(RT_USING_USER_MAIN) && 已定义(RT_USING_HEAP)
rt_system_heap_init(rt_heap_begin_get(), rt_heap_end_get());
#万一
}
2.2 修改uart.c
增加头文件的引用
/* 用户代码开始 0 */
#include
/* 用户代码结束 0 */
增加uart.h中添加两个函数的声明
/* 用户代码开始原型 */
字符 rt_hw_console_getchar(void);
void rt_hw_console_output(const char *str);
/* 用户代码结束原型 */
增加uart.h中增加了两个函数的实现在uart.c中
/* 用户代码开始 1 */
字符 rt_hw_console_getchar(void)
{
int ch = -1;
如果 (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET)
{
ch = huart1.Instance->DR & 0xff;
}
别的
{
if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_ORE) != RESET)
{
__HAL_UART_CLEAR_OREFLAG(&huart1);
}
rt_thread_mdelay(10);
}
返回 ch;
}
void rt_hw_console_output(const char *str)
{
rt_size_t i = 0,大小 = 0;
字符 a = 'r';
__HAL_UNLOCK(&huart1);
大小 = rt_strlen(str);
for (i = 0; i < 大小; i++)
{
如果 (*(str + i) == 'n')
{
HAL_UART_Transmit(&huart1, (uint8_t *)&a, 1, 1);
}
HAL_UART_Transmit(&huart1, (uint8_t *)(str + i), 1, 1);
}
}
/* 用户代码结束 1 */
修改main.c,隐藏的:同时循环中必须添加rt_thread_delay(100)函数,否则FISH不会出现,无法显示。
/* 用户代码结束标题 */
/* 包括 ----------------------------------------------- -------------------*/
#include "main.h"
#include "usart.h"
#include "gpio.h"
/* 私有包含---------------------------------------------- ------------*/
/* 用户代码开始包括 */
#include //自己添加的引用
/* 用户代码结束包括 */
/* 私有 typedef ---------------------------------------------- -------------*/
/* 用户代码开始 PTD */
/* 用户代码结束 PTD */
/* 私有定义---------------------------------------------- --------------*/
/* 用户代码开始 PD */
/* 用户代码结束 PD */
/* 私有宏 ------------------------------- ---------------*/
/* 用户代码开始 PM */
/* 用户代码结束 PM */
/* 私有变量---------------------------------------------- -----------*/
/* 用户代码开始 PV */
/* 用户代码结束 PV */
/* 私有函数原型 --------------------------------------------- --*/
void SystemClock_Config(void);
/* 用户代码开始 PFP */
/* 用户代码结束 PFP */
/* 私人用户代码 --------------------------------------------- ------------*/
/* 用户代码开始 0 */
/* 用户代码结束 0 */
/**
* @brief 应用程序入口点。
* @retval 整数
*/
int main(void)
{
/* 用户代码开始 1 */
/* 用户代码结束 1 */
/* MCU配置---------------------------------------------- ----------*/
/* 重置所有外设,初始化 Flash 接口和 Systick。*/
/* 用户代码开始初始化 */
/* 用户代码结束初始化 */
/* 配置系统时钟 */
SystemClock_Config();
/* 用户代码开始 SysInit */
/* 用户代码结束系统初始化 */
/* 初始化所有配置的外设 */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* 用户代码开始 2 */
/* 用户代码结束 2 */
/* 无限循环 */
/* 用户代码开始时 */
而 (1)
{
/* 用户代码结束时 */
/* 用户代码开始 3 */
rt_thread_mdelay(1000);//必须强制否决者FISH不显示
}
/* 用户代码结束 3 */
}
使用腻子连接一个,FISH成功 界面后记 :在编译过程中出现如下所示:经在RT-螺纹官方技术交流群1里咨询,得到后来的支持,特别感谢黄洋界和杰克为我指点,最后黄洋界的方法是, 在工程栏上那个文件精美,该文件类型不是具体的 选择语言文件
举报