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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1184|回復: 4
收起左側(cè)

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

[復制鏈接]
ID:1076325 發(fā)表于 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.   /* 搶斷優(yōu)先級*/
  17.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  18.   /* 子優(yōu)先級 */
  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 配置,工作參數(shù)配置
  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.         // 打開串口外設(shè)的時鐘
  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.         // 配置串口的工作參數(shù)
  50.         // 配置波特率
  51.         USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
  52.         // 配置 針數(shù)據(jù)字長
  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.         // 配置工作模式,收發(fā)一起
  62.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  63.         // 完成串口的初始化配置
  64.         USART_Init(DEBUG_USARTx, &USART_InitStructure);
  65.        
  66.         // 串口中斷優(yōu)先級配置
  67.         NVIC_Configuration();
  68.        
  69.         // 使能串口接收中斷
  70.         USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);       
  71.        
  72.         // 使能串口
  73.         USART_Cmd(DEBUG_USARTx, ENABLE);            
  74. }

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

  84. /****************** 發(fā)送8位的數(shù)組 ************************/
  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.             /* 發(fā)送一個字節(jié)數(shù)據(jù)到USART */
  92.             Usart_SendByte(pUSARTx,array[i]);       
  93.   
  94.   }
  95.         /* 等待發(fā)送完成 */
  96.         while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);
  97. }

  98. /*****************  發(fā)送字符串 **********************/
  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.   /* 等待發(fā)送完成 */
  109.   while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET)
  110.   {}
  111. }

  112. /*****************  發(fā)送一個16位數(shù) **********************/
  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.         /* 發(fā)送高八位 */
  123.         USART_SendData(pUSARTx,temp_h);       
  124.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
  125.        
  126.         /* 發(fā)送低八位 */
  127.         USART_SendData(pUSARTx,temp_l);       
  128.         while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);       
  129. }

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

  141. ///重定向c庫函數(shù)scanf到串口,重寫向后可使用scanf、getchar等函數(shù)
  142. int fgetc(FILE *f)
  143. {
  144.                 /* 等待串口輸入數(shù)據(jù) */
  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

回復

使用道具 舉報

ID:883242 發(fā)表于 2024-4-12 15:31 | 顯示全部樓層
問題是你改動了什么???

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

使用道具 舉報

ID:1096929 發(fā)表于 2024-4-12 20:07 | 顯示全部樓層
引腳數(shù)是對的吧 其實你可以pin對pin的
回復

使用道具 舉報

ID:1000679 發(fā)表于 2024-4-12 21:34 | 顯示全部樓層
提示很清楚,有那么多未定義的函數(shù)。 未定義或是未include 相關(guān).h。還有就是編譯設(shè)置那里有沒有選擇做了定義的文件路徑。
回復

使用道具 舉報

ID:883242 發(fā)表于 2024-4-13 21:30 | 顯示全部樓層
bingbingbom 發(fā)表于 2024-4-12 21:34
提示很清楚,有那么多未定義的函數(shù)。 未定義或是未include 相關(guān).h。還有就是編譯設(shè)置那里有沒有選擇做了定 ...

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产高清精品一区二区三区 | 国产999精品久久久 精品三级在线观看 | 日韩三区在线观看 | 成年人黄色免费视频 | 欧美一级久久 | 91在线影院| 国产精品国产精品国产专区不卡 | 91精品国产91久久综合桃花 | 伊人伊人 | 国产精品www | 国产成人精品免费视频大全最热 | 精品91久久 | 成人av网站在线观看 | 国产91观看 | 97人澡人人添人人爽欧美 | 日韩成人在线观看 | av手机在线播放 | 国产成人免费观看 | 日韩欧美三区 | 日韩在线免费视频 | 久久久www| 久久高清| 三级黄视频在线观看 | 久久久免费少妇高潮毛片 | 国产精品福利视频 | 一区二区三区小视频 | 欧美日韩一区二区三区不卡视频 | 天天综合亚洲 | 欧美精品一区三区 | 一区二区三区四区在线视频 | 国产精品毛片一区二区在线看 | 日韩欧美精品在线 | 国产成人久久av免费高清密臂 | xx视频在线 | 久久精品在线免费视频 | 国产成人精品午夜视频免费 | 色天堂影院 | 四虎影院新网址 | 操人网 | 青青久在线视频 | av黄色在线播放 |