久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1230|回復: 4
打印 上一主題 下一主題
收起左側

大家好,我想請教一下關于STM32F103VE工程文件移植到STM32F103C8工程遇到的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:1076325 發表于 2024-4-12 13:56 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是usart.c和usart.h代碼:
  1. #include "usart.h"

  2. /**
  3.   * @brief  配置嵌套向量中斷控制器NVIC
  4.   * @param  無
  5.   * @retval 無
  6.   */
  7. static void NVIC_Configuration(void)
  8. {
  9.   NVIC_InitTypeDef NVIC_InitStructure;
  10.   
  11.   /* 嵌套向量中斷控制器組選擇 */
  12.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  13.   
  14.   /* 配置USART為中斷源 */
  15.   NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;
  16.   /* 搶斷優先級*/
  17.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  18.   /* 子優先級 */
  19.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  20.   /* 使能中斷 */
  21.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  22.   /* 初始化配置NVIC */
  23.   NVIC_Init(&NVIC_InitStructure);
  24. }

  25. /**
  26.   * @brief  USART GPIO 配置,工作參數配置
  27.   * @param  無
  28.   * @retval 無
  29.   */
  30. void USART_Config(void)
  31. {
  32.         GPIO_InitTypeDef GPIO_InitStructure;
  33.         USART_InitTypeDef USART_InitStructure;

  34.         // 打開串口GPIO的時鐘
  35.         DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
  36.        
  37.         // 打開串口外設的時鐘
  38.         DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);

  39.         // 將USART Tx的GPIO配置為推挽復用模式
  40.         GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
  41.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  42.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  43.         GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);

  44.   // 將USART Rx的GPIO配置為浮空輸入模式
  45.         GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
  46.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  47.         GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);
  48.        
  49.         // 配置串口的工作參數
  50.         // 配置波特率
  51.         USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
  52.         // 配置 針數據字長
  53.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  54.         // 配置停止位
  55.         USART_InitStructure.USART_StopBits = USART_StopBits_1;
  56.         // 配置校驗位
  57.         USART_InitStructure.USART_Parity = USART_Parity_No ;
  58.         // 配置硬件流控制
  59.         USART_InitStructure.USART_HardwareFlowControl =
  60.         USART_HardwareFlowControl_None;
  61.         // 配置工作模式,收發一起
  62.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  63.         // 完成串口的初始化配置
  64.         USART_Init(DEBUG_USARTx, &USART_InitStructure);
  65.        
  66.         // 串口中斷優先級配置
  67.         NVIC_Configuration();
  68.        
  69.         // 使能串口接收中斷
  70.         USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);       
  71.        
  72.         // 使能串口
  73.         USART_Cmd(DEBUG_USARTx, ENABLE);            
  74. }

  75. /*****************  發送一個字節 **********************/
  76. void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)
  77. {
  78.         /* 發送一個字節數據到USART */
  79.         USART_SendData(pUSARTx,ch);
  80.                
  81.         /* 等待發送數據寄存器為空 */
  82.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);       
  83. }

  84. /****************** 發送8位的數組 ************************/
  85. void Usart_SendArray( USART_TypeDef * pUSARTx, uint8_t *array, uint16_t num)
  86. {
  87.   uint8_t i;
  88.        
  89.         for(i=0; i<num; i++)
  90.   {
  91.             /* 發送一個字節數據到USART */
  92.             Usart_SendByte(pUSARTx,array[i]);       
  93.   
  94.   }
  95.         /* 等待發送完成 */
  96.         while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
  97. }

  98. /*****************  發送字符串 **********************/
  99. void Usart_SendString( USART_TypeDef * pUSARTx, char *str)
  100. {
  101.         unsigned int k=0;
  102.   do
  103.   {
  104.       Usart_SendByte( pUSARTx, *(str + k) );
  105.       k++;
  106.   } while(*(str + k)!='\0');
  107.   
  108.   /* 等待發送完成 */
  109.   while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
  110.   {}
  111. }

  112. /*****************  發送一個16位數 **********************/
  113. void Usart_SendHalfWord( USART_TypeDef * pUSARTx, uint16_t ch)
  114. {
  115.         uint8_t temp_h, temp_l;
  116.        
  117.         /* 取出高八位 */
  118.         temp_h = (ch&0XFF00)>>8;
  119.         /* 取出低八位 */
  120.         temp_l = ch&0XFF;
  121.        
  122.         /* 發送高八位 */
  123.         USART_SendData(pUSARTx,temp_h);       
  124.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
  125.        
  126.         /* 發送低八位 */
  127.         USART_SendData(pUSARTx,temp_l);       
  128.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);       
  129. }

  130. ///重定向c庫函數printf到串口,重定向后可使用printf函數
  131. int fputc(int ch, FILE *f)
  132. {
  133.                 /* 發送一個字節數據到串口 */
  134.                 USART_SendData(DEBUG_USARTx, (uint8_t) ch);
  135.                
  136.                 /* 等待發送完畢 */
  137.                 while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);               
  138.        
  139.                 return (ch);
  140. }

  141. ///重定向c庫函數scanf到串口,重寫向后可使用scanf、getchar等函數
  142. int fgetc(FILE *f)
  143. {
  144.                 /* 等待串口輸入數據 */
  145.                 while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);

  146.                 return (int)USART_ReceiveData(DEBUG_USARTx);
  147. }

復制代碼
  1. #ifndef __USART_H
  2. #define        __USART_H


  3. #include "stm32f10x.h"
  4. #include <stdio.h>

  5. /**
  6.   * 串口宏定義,不同的串口掛載的總線和IO不一樣,移植時需要修改這幾個宏
  7.         * 1-修改總線時鐘的宏,uart1掛載到apb2總線,其他uart掛載到apb1總線
  8.         * 2-修改GPIO的宏
  9.   */
  10.        
  11. // 串口1-USART1
  12. #define  DEBUG_USARTx                   USART1
  13. #define  DEBUG_USART_CLK                RCC_APB2Periph_USART1
  14. #define  DEBUG_USART_APBxClkCmd         RCC_APB2PeriphClockCmd
  15. #define  DEBUG_USART_BAUDRATE           115200

  16. // USART GPIO 引腳宏定義
  17. #define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOA)
  18. #define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
  19.    
  20. #define  DEBUG_USART_TX_GPIO_PORT       GPIOA   
  21. #define  DEBUG_USART_TX_GPIO_PIN        GPIO_Pin_9
  22. #define  DEBUG_USART_RX_GPIO_PORT       GPIOA
  23. #define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_10

  24. #define  DEBUG_USART_IRQ                USART1_IRQn
  25. #define  DEBUG_USART_IRQHandler         USART1_IRQHandler


  26. // 串口2-USART2
  27. //#define  DEBUG_USARTx                   USART2
  28. //#define  DEBUG_USART_CLK                RCC_APB1Periph_USART2
  29. //#define  DEBUG_USART_APBxClkCmd         RCC_APB1PeriphClockCmd
  30. //#define  DEBUG_USART_BAUDRATE           115200

  31. //// USART GPIO 引腳宏定義
  32. //#define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOA)
  33. //#define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
  34. //   
  35. //#define  DEBUG_USART_TX_GPIO_PORT       GPIOA   
  36. //#define  DEBUG_USART_TX_GPIO_PIN        GPIO_Pin_2
  37. //#define  DEBUG_USART_RX_GPIO_PORT       GPIOA
  38. //#define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_3

  39. //#define  DEBUG_USART_IRQ                USART2_IRQn
  40. //#define  DEBUG_USART_IRQHandler         USART2_IRQHandler

  41. // 串口3-USART3
  42. //#define  DEBUG_USARTx                   USART3
  43. //#define  DEBUG_USART_CLK                RCC_APB1Periph_USART3
  44. //#define  DEBUG_USART_APBxClkCmd         RCC_APB1PeriphClockCmd
  45. //#define  DEBUG_USART_BAUDRATE           115200

  46. //// USART GPIO 引腳宏定義
  47. //#define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOB)
  48. //#define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
  49. //   
  50. //#define  DEBUG_USART_TX_GPIO_PORT       GPIOB   
  51. //#define  DEBUG_USART_TX_GPIO_PIN        GPIO_Pin_10
  52. //#define  DEBUG_USART_RX_GPIO_PORT       GPIOB
  53. //#define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_11

  54. //#define  DEBUG_USART_IRQ                USART3_IRQn
  55. //#define  DEBUG_USART_IRQHandler         USART3_IRQHandler

  56. // 串口4-UART4
  57. //#define  DEBUG_USARTx                   UART4
  58. //#define  DEBUG_USART_CLK                RCC_APB1Periph_UART4
  59. //#define  DEBUG_USART_APBxClkCmd         RCC_APB1PeriphClockCmd
  60. //#define  DEBUG_USART_BAUDRATE           115200

  61. //// USART GPIO 引腳宏定義
  62. //#define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOC)
  63. //#define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
  64. //   
  65. //#define  DEBUG_USART_TX_GPIO_PORT       GPIOC   
  66. //#define  DEBUG_USART_TX_GPIO_PIN        GPIO_Pin_10
  67. //#define  DEBUG_USART_RX_GPIO_PORT       GPIOC
  68. //#define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_11

  69. //#define  DEBUG_USART_IRQ                UART4_IRQn
  70. //#define  DEBUG_USART_IRQHandler         UART4_IRQHandler


  71. // 串口5-UART5
  72. //#define  DEBUG_USARTx                   UART5
  73. //#define  DEBUG_USART_CLK                RCC_APB1Periph_UART5
  74. //#define  DEBUG_USART_APBxClkCmd         RCC_APB1PeriphClockCmd
  75. //#define  DEBUG_USART_BAUDRATE           115200

  76. //// USART GPIO 引腳宏定義
  77. //#define  DEBUG_USART_GPIO_CLK           (RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD)
  78. //#define  DEBUG_USART_GPIO_APBxClkCmd    RCC_APB2PeriphClockCmd
  79. //   
  80. //#define  DEBUG_USART_TX_GPIO_PORT       GPIOC   
  81. //#define  DEBUG_USART_TX_GPIO_PIN        GPIO_Pin_12
  82. //#define  DEBUG_USART_RX_GPIO_PORT       GPIOD
  83. //#define  DEBUG_USART_RX_GPIO_PIN        GPIO_Pin_2

  84. //#define  DEBUG_USART_IRQ                UART5_IRQn
  85. //#define  DEBUG_USART_IRQHandler         UART5_IRQHandler


  86. void USART_Config(void);
  87. void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch);
  88. void Usart_SendString( USART_TypeDef * pUSARTx, char *str);
  89. void Usart_SendHalfWord( USART_TypeDef * pUSARTx, uint16_t ch);


  90. #endif /* __USART_H */
復制代碼
這是我移植usart.c文件遇到的錯誤編譯提示:

Build target 'LED'
compiling usart.c...
..\USER\usart.c(35): error:  #20: identifier "USART_InitTypeDef" is undefined
        USART_InitTypeDef USART_InitStructure;
..\USER\usart.c(58): error:  #20: identifier "USART_WordLength_8b" is undefined
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
..\USER\usart.c(60): error:  #20: identifier "USART_StopBits_1" is undefined
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
..\USER\usart.c(62): error:  #20: identifier "USART_Parity_No" is undefined
        USART_InitStructure.USART_Parity = USART_Parity_No ;
..\USER\usart.c(65): error:  #20: identifier "USART_HardwareFlowControl_None" is undefined
        USART_HardwareFlowControl_None;
..\USER\usart.c(67): error:  #20: identifier "USART_Mode_Rx" is undefined
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
..\USER\usart.c(67): error:  #20: identifier "USART_Mode_Tx" is undefined
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
..\USER\usart.c(69): warning:  #223-D: function "USART_Init" declared implicitly
        USART_Init(DEBUG_USARTx, &USART_InitStructure);
..\USER\usart.c(75): warning:  #223-D: function "USART_ITConfig" declared implicitly
        USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);   
..\USER\usart.c(75): error:  #20: identifier "USART_IT_RXNE" is undefined
        USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);   
..\USER\usart.c(78): warning:  #223-D: function "USART_Cmd" declared implicitly
        USART_Cmd(DEBUG_USARTx, ENABLE);            
..\USER\usart.c(85): warning:  #223-D: function "USART_SendData" declared implicitly
        USART_SendData(pUSARTx,ch);
..\USER\usart.c(88): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);  
..\USER\usart.c(88): error:  #20: identifier "USART_FLAG_TXE" is undefined
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);  
..\USER\usart.c(103): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
        while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
..\USER\usart.c(103): error:  #20: identifier "USART_FLAG_TC" is undefined
        while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
..\USER\usart.c(117): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
    while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
..\USER\usart.c(117): error:  #20: identifier "USART_FLAG_TC" is undefined
    while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
..\USER\usart.c(132): warning:  #223-D: function "USART_SendData" declared implicitly
        USART_SendData(pUSARTx,temp_h);
..\USER\usart.c(133): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
..\USER\usart.c(133): error:  #20: identifier "USART_FLAG_TXE" is undefined
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
..\USER\usart.c(144): warning:  #223-D: function "USART_SendData" declared implicitly
                USART_SendData(DEBUG_USARTx, (uint8_t) ch);
..\USER\usart.c(147): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);            
..\USER\usart.c(147): error:  #20: identifier "USART_FLAG_TXE" is undefined
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);            
..\USER\usart.c(156): warning:  #223-D: function "USART_GetFlagStatus" declared implicitly
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
..\USER\usart.c(156): error:  #20: identifier "USART_FLAG_RXNE" is undefined
                while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
..\USER\usart.c(158): warning:  #223-D: function "USART_ReceiveData" declared implicitly
                return (int)USART_ReceiveData(DEBUG_USARTx);
..\USER\usart.c: 13 warnings, 14 errors
".\Obj\Project.axf" - 14 Error(s), 13 Warning(s).
Target not created.
Build Time Elapsed:  00:00:00

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:883242 發表于 2024-4-12 15:31 | 只看該作者
問題是你改動了什么???

先把VE工程編譯通過,然后在工程文件里面把單片機型號改成C8,不可能有這么多錯誤,你一定是做了很多很多余且毫無意義的工作。
回復

使用道具 舉報

板凳
ID:1096929 發表于 2024-4-12 20:07 | 只看該作者
引腳數是對的吧 其實你可以pin對pin的
回復

使用道具 舉報

地板
ID:1000679 發表于 2024-4-12 21:34 | 只看該作者
提示很清楚,有那么多未定義的函數。 未定義或是未include 相關.h。還有就是編譯設置那里有沒有選擇做了定義的文件路徑。
回復

使用道具 舉報

5#
ID:883242 發表于 2024-4-13 21:30 | 只看該作者
bingbingbom 發表于 2024-4-12 21:34
提示很清楚,有那么多未定義的函數。 未定義或是未include 相關.h。還有就是編譯設置那里有沒有選擇做了定 ...

既然VE能成功,文件路徑肯定是對的,樓主一定是做了不應該做的工作。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人精品免费 | 999久久久 | 精品欧美一区二区三区久久久小说 | 欧美一级做性受免费大片免费 | 在线观看免费国产 | 久久久久久高潮国产精品视 | 久久久国产精品一区 | 久草日韩| 福利国产| 91久久国产综合久久 | 国产精品视频观看 | 国产日韩精品视频 | 免费看国产一级特黄aaaa大片 | 久久亚洲一区二区三 | 福利一区在线观看 | 国产精品污www一区二区三区 | 成人精品一区二区三区 | 成人av片在线观看 | 国产免费一级一级 | 久久国产秒 | 国产精品视频一区二区三区不卡 | 中文字幕视频免费 | 日韩影院在线观看 | 日本成人二区 | 久久久久久精 | 先锋资源吧| 免费一区在线观看 | 一区二区视频在线 | 亚洲精品一区在线 | 日日爱av | 国产午夜精品久久久久 | 91不卡在线 | 国产一区亚洲二区三区 | 国产高清免费视频 | 欧美日本韩国一区二区 | 色综合色综合色综合 | 亚洲欧美日韩中文在线 | 久久久久久久99 | 在线观看成人精品 | 国产亚洲欧美日韩精品一区二区三区 | 黄色大片网站 |