你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

main.c(20): error: #8: missing closing quote 出现这个错误是怎么回...

[复制链接]
hhhhhhhaa 提问时间:2018-9-5 10:13 /
main.c(20): error:  #8: missing closing quote 出现这个错误是怎么回事啊?



本来应该发送的是                        char sText[20] = { "多字节字符串!OK!" };
结果在编译的时候 报错了              char sText[20] = { "澶氬瓧鑺傚瓧绗︿覆锛丱K锛?" };
怎么会出现这种情况啊



收藏 评论19 发布时间:2018-9-5 10:13

举报

19个回答
feixiang20 回答时间:2018-9-5 23:33:59
出现乱码是因为添加字符的操作有问题

评分

参与人数 1ST金币 -10 收起 理由
zero99 -10

查看全部评分

hhhhhhhaa 回答时间:2018-9-5 10:31:37
toofree 发表于 2018-9-5 10:18
好歹发个工程呀,谁知道你用的什么IDE,什么编辑器,什么编码方式?
除了字符串本身外,有没有用中文输入法 ...
  1. # include "main.h"

  2. int a=0xC4E3BAC3;
  3. u8 b[]={"你好"};

  4. int main(void)
  5. {

  6.          
  7.                         delay_init();                               
  8.                         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  9.                         My_USART2_Init();
  10.        
  11.    
  12.        
  13.               while(1)
  14.               {
  15.               
  16.               
  17.               
  18.               
  19.               
  20.               
  21.               
  22.               
  23.               
  24.               
  25.               
  26.               
  27.               
  28.                                                                
  29.                                                 printf("%s",b);
  30. //               
  31. //                                               
  32.                   delay_ms(10000);   
  33.                           delay_ms(10000);
  34.               delay_ms(10000);  
  35. //              delay_ms(10000);  
  36. //              delay_ms(10000);                         
  37. //              printf("%x",a);
  38. //                                        delay_ms(10000);   
  39.                 }
  40.                
  41.        
  42. }


复制代码
这是主函数的代码

  1. #include "sys.h"
  2. #include "usart.h"          

  3. #if SYSTEM_SUPPORT_OS
  4. #include "includes.h"                                        //ucos 使用          
  5. #endif


  6. //////////////////////////////////////////////////////////////////
  7. //加入以下代码,支持printf函数,而不需要选择use MicroLIB          
  8. #if 1
  9. #pragma import(__use_no_semihosting)            
  10.             
  11. struct __FILE
  12. {
  13.         int handle;

  14. };

  15. FILE __stdout;      
  16. //定义_sys_exit()以避免使用半主机模式   
  17. int  sys_exit(int x)
  18. {
  19.         x = x;
  20.         return x;
  21. }
  22. //重定义fputc函数
  23. int fputc(int ch, FILE *f)
  24. {      
  25.         while((USART2->SR&0X40)==0);//循环发送,直到发送完毕   
  26.     USART2->DR = (u8) ch;      
  27.         return ch;
  28. }
  29. #endif


  30. void My_USART2_Init(void)
  31. {

  32.        
  33.         GPIO_InitTypeDef GPIO_InitStrue;
  34.         USART_InitTypeDef USART_InitStrue;
  35.         NVIC_InitTypeDef NVIC_InitStrue;
  36.        
  37.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  38.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
  39.        
  40.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
  41.         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
  42.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  43.   GPIO_Init(GPIOA,&GPIO_InitStrue);
  44.        
  45.         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
  46.         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
  47.         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;
  48.   GPIO_Init(GPIOA,&GPIO_InitStrue);
  49.        
  50.        
  51.         USART_InitStrue.USART_BaudRate=9600;
  52.         USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  53.         USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
  54.         USART_InitStrue.USART_Parity=USART_Parity_No;
  55.         USART_InitStrue.USART_StopBits=USART_StopBits_1;
  56.         USART_InitStrue.USART_WordLength=USART_WordLength_8b;
  57.        
  58.         USART_Init(USART2,&USART_InitStrue);
  59.         USART_Cmd(USART2,ENABLE);
  60.         USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
  61.        
  62.        
  63.         NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;
  64.         NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
  65.         NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
  66.         NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
  67.         NVIC_Init(&NVIC_InitStrue);
  68.        
  69.        
  70. }

  71. void USART2_IRQHandler(void)
  72. {
  73.         u8 Res;
  74.          if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
  75.                 {
  76.                 Res =USART_ReceiveData(USART2);       
  77. //                        Res++;
  78.                 USART_SendData(USART2, Res);
  79.                        
  80.      }
  81. }
复制代码
这是usart的代码


废鱼 回答时间:2018-9-5 10:42:24
本帖最后由 安 于 2018-9-5 10:44 编辑

网上好多解决办法的。一个一个测试一下。我试了一下,没有问题。

https://wenku.baidu.com/view/8e0 ... f9aef8941e48b8.html

用emwin做界面的时候遇到的错误,MDK5可能无法编译一些汉字编码,对应汉字在信息反馈中会显示为乱码,更会附带一些如“expected a "}"”这样的错误提示。
解决方法:Options for Target “你的工程名”(MDK5的魔术棒) -> C/C++ -> Misc Controls添加“ --locale=english”

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

七哥 回答时间:2018-9-5 10:18:45
本帖最后由 toofree 于 2018-9-5 10:22 编辑

好歹发个工程呀,谁知道你用的什么IDE,什么编辑器,什么编码方式?
除了字符串本身外,有没有用中文输入法时输入过标点符号?
提示引号附近有错,那就肯定有错。

你确定你这是用的C语言吗?没这么定义的,又带花括号,又带引号的,这不是printf。

char sText[20] = "多字节字符串!OK!";

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

废鱼 回答时间:2018-9-5 10:20:02
估计还是编译器环境的配置问题。
hhhhhhhaa 回答时间:2018-9-5 10:32:25
安 发表于 2018-9-5 10:20
估计还是编译器环境的配置问题。

环境哪里出问题了啊
hhhhhhhaa 回答时间:2018-9-5 10:34:37
安 发表于 2018-9-5 10:20
估计还是编译器环境的配置问题。

看一下环境配置

$@AKE$HD7H3W1GOAQ84@XWW.png
FPD@NAOA~N5DVLJVXQSHQ5I.png
N@O[N%]OG]F}UTWRX)[F@$E.png
Y(RS630$4%)758QT]TMMC~M.png
jyl_518 回答时间:2018-9-5 10:38:49
本帖最后由 jyl518-283289 于 2018-9-5 10:40 编辑

菜单Edition->Configuration,然后选择GB2312试试
222.jpg



评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

七哥 回答时间:2018-9-5 10:41:59

傲游截图20180905103033.png

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

hhhhhhhaa 回答时间:2018-9-5 10:42:35
jyl518-283289 发表于 2018-9-5 10:38
菜单Edition->Configuration,然后选择GB2312试试

一直都是这个
61VL_~K(@MY]9[N6)TH`OTH.png
hhhhhhhaa 回答时间:2018-9-5 10:44:57

我用的是MDK5.24 通过串口2发送到电脑上,然后通过串口调试助手查看的,你的编译环境都不一样
七哥 回答时间:2018-9-5 10:56:10
本帖最后由 toofree 于 2018-9-5 10:58 编辑

傲游截图20180905105537.png

Hello_arm - 副本.rar (348.95 KB, 下载次数: 1)
hhhhhhhaa 回答时间:2018-9-5 10:57:34
安 发表于 2018-9-5 10:42
网上好多解决办法的。一个一个测试一下。我试了一下,没有问题。

https://wenku.baidu.com/view/8e0 ... f ...

一样还是乱码,没区别
)OS$032AH9RKM]2EQ)9D4PR.png
hhhhhhhaa 回答时间:2018-9-5 10:59:05

能把工程发给我一下吗,我看看
hhhhhhhaa 回答时间:2018-9-5 11:08:58

没有问题,您这是怎么设置的啊


GF}76`V0SJ~X6U`70WT`OA1.png
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版