0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rt-thread studio新建stm32f407工程

冬至子 来源:YZRD 作者:YZRD 2023-10-12 17:42 次阅读

rt-thread studio新建stm32f407工程,使用的版本是:2.2.6,stm32f4的支持包版本为0.2.2。先不用0.2.3,因为使用0.2.3建立的模板编译会报错。。

按照模板新建工程,默认使用内部时钟,编译,正常,串口1输出正常。修改为外部晶振,按照要求修改了代码,如下:

void system_clock_config(int target_freq_mhz)
{
#if false
RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };
RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };
/** Configure the main internal regulator output voltage
/
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/
* Initializes the CPU, AHB and APB busses clocks
/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLM = 8;
RCC_OscInitStruct.PLL.PLLN = target_freq_mhz;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/
* Initializes the CPU, AHB and APB busses clocks
/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}
#else
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/
* Configure the main internal regulator output voltage
/
__HAL_RCC_PWR_CLK_ENABLE();
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
/
* Initializes the RCC Oscillators according to the specified parameters

in the RCC_OscInitTypeDef structure.
/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 25;
RCC_OscInitStruct.PLL.PLLN = 336;
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = 4;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/
* Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
{
Error_Handler();
}
#endif
}

同时修改了宏定义:

#define BSP_CLOCK_SOURCE ("HSE")
#define BSP_CLOCK_SOURCE_FREQ_MHZ ((int32_t)25)
#define BSP_CLOCK_SYSTEM_FREQ_MHZ ((int32_t)168)

编译正常,调试发现输出不正常,乱码。

分析应该是时钟配置不正确,先检查系统时钟,发现不是设定的系统时钟,通过调试发现还需要修改stm32f407zgt6driversstm32f4xx_hal_conf.h文件中的宏定义:

#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)25000000U) /*!< Value of the External oscillator in Hz /
#endif /
HSE_VALUE */

原先为8M,需要改为实际25M,重新编译调试,串口1正常输出。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RCC
    RCC
    +关注

    关注

    0

    文章

    93

    浏览量

    26932
  • 串口输出
    +关注

    关注

    0

    文章

    16

    浏览量

    7486
  • STM32F407
    +关注

    关注

    15

    文章

    187

    浏览量

    29437
  • RT-Thread
    +关注

    关注

    31

    文章

    1285

    浏览量

    40082
收藏 人收藏

    评论

    相关推荐

    RT-Thread Studio新建stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?

    RT-Thread Studio新建stm32f407-atk-explorer工程运行qemu失败,是什么原因引起的?该如何修改?
    发表于 07-16 06:08

    如何使用RT-Thread Studio新建项目

    RT-Thread Studio学习之使用外部时钟系统简介新建RT-Thread项目使用外部时钟简介本文将基于STM32F407VET芯片介
    发表于 01-20 07:51

    RT-Thread Studio怎么配置STM32F407的TCPSERVER服务呢?

    RT-Thread Studio怎么配置STM32F407的TCPSERVER服务?
    发表于 12-29 14:53

    新建STM32F407工程编译不通过是何原因?

    stm32f103工程,编译正常,通过rt-thread studio打开cubemax,不进行任何配置,点击生成代码,然后再在rt-thread
    发表于 01-13 14:18

    RS485驱动包的使用

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2。工程使用上
    发表于 02-09 14:26

    rt-thread studio新建stm32f407工程

    rt-thread studio新建stm32f407工程,使用的版本是:2.2.6,stm32f
    发表于 02-10 16:49

    RT-Thread中Lan8720和lwip协议栈的使用

    。 修改工程使用外部晶振,可参考第一篇文章rt-thread studio新建stm32f407工程
    发表于 02-13 14:55

    RT-Thread STM32 配置系统时钟(使用外部晶振)

    RT-Thread STM32 配置系统时钟开发环境芯片:STM32F103RCT6RT-Thread Studio: V1.0.6(现在已经更新到1.1.3,由于本人使用RTT开发已
    发表于 12-14 18:45 14次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>STM32</b> 配置系统时钟(使用外部晶振)

    RT-Thread文档_正点原子探索者 STM32F407 上手指南

    RT-Thread文档_正点原子探索者 STM32F407 上手指南
    发表于 02-22 18:25 13次下载
    <b class='flag-5'>RT-Thread</b>文档_正点原子探索者 <b class='flag-5'>STM32F407</b> 上手指南

    RT-Thread使用cjson软件包发送64位长整型数据

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,rt-thread
    的头像 发表于 10-11 15:09 916次阅读
    <b class='flag-5'>RT-Thread</b>使用cjson软件包发送64位长整型数据

    RT-Thread移植使用webserver (lwip+httpd)

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,rt-thread
    的头像 发表于 10-12 12:49 1329次阅读
    <b class='flag-5'>RT-Thread</b>移植使用webserver (lwip+httpd)

    RT-Thread在Lan8720a和 lwip基础上移植ntp流程

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2。以RT-Threa
    的头像 发表于 10-12 16:59 1895次阅读
    <b class='flag-5'>RT-Thread</b>在Lan8720a和 lwip基础上移植ntp流程

    RT-Thread使用Soft RTC(软件模拟RTC)

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,rt-thread 使用版本为4.0.3,stm32f
    的头像 发表于 10-12 17:39 693次阅读
    <b class='flag-5'>RT-Thread</b>使用Soft RTC(软件模拟RTC)

    RT-Thread中Lan8720和lwip协议栈的使用

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2,Agile Modbus软件包版本为v1.1.2。
    的头像 发表于 10-13 10:19 1426次阅读
    <b class='flag-5'>RT-Thread</b>中Lan8720和lwip协议栈的使用

    RS485驱动包的使用

    开发环境:野火的stm32f407rt-thread studio版本是版本: 2.2.6,stm32f4的资源包为0.2.2。工程使用上
    的头像 发表于 10-13 10:33 790次阅读
    RS485驱动包的使用