完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于STM8S103F3 UART1中断问题!
以上来自于谷歌翻译 以下为原文 About STM8S103F3 UART1 interrupt issue ! |
|
相关推荐
12个回答
|
|
我尝试将STM8S103F3 UART1与PC COM1端口一起使用(19200波特,非奇偶校验
8位数据,1个停止位),但有一些数据丢失。 void UART_Init(void) { // [2] 310 UART1 INITIALIZATION // Step1)[2] 346定义字长(UART_CR1中的M位) UART1-&gt; CR1&amp; = ~UART1_CR1_M; // M = 0(8个数据位) // Step2)[2] 349定义UART_CR3中的停止位数 UART1-&gt; CR3&amp; = ~UART1_CR3_STOP; // STOP [1:0] = 00(1个停止位) //步骤3)[2] 316选择所需的波特率 // 1)波特率= 19200 // Tx / Rx波特率= fMASTER / UART_DIV // =(16MHz / 8)/ 19200 // = 2000 / 19.2 // = 104.16 //〜= 104 = 068h UART1-> BRR2 = 0x08; // 19200波特 UART1-&gt; BRR1 = 0x06; //步骤4)启用发送器模式(UART_CR2中的TEN位) UART1-> CR2 | = UART1_CR2_TEN; //传输启用 } / * UART_Init * / u8 bUART_TxCnt; u8 * pbUART_Tx; //系统发送指针 void UART_TxByte(u8 bByte) { pbUART_Tx =&amp; bByte; bUART_TxCnt = 1; UART1-&gt; CR2 | = UART1_CR2_TIEN; } / * UART_TxByte * / @far @interrupt void UART1_TX_IRQHandler(void) { if(bUART_TxCnt) { //在设置新数据之前是否需要检查TC位? UART1-&gt; DR = * pbUART_Tx ++; bUART_TxCnt--; } 其他 UART1-&gt; CR2&amp; = ~UART1_CR2_TIEN; } void main(void) { u8 bData; UART_Init(); enableInterrupts(); for(;;) { for(bData ='0'; bData&lt; ='9'; bData ++) UART_TxByte(BDATA); } / *用于无限循环* / } / * main * / PC PComm实用程序丢失了一些数据作为附件。 我错过了什么吗? Q1)发送数据寄存器空和传输完成中断事件之间有什么区别? Q2)在将数据写入UART_DR寄存器之前是否需要检查TC位? Q3)每个传输的数据是否都会产生TXE和TC中断? Q4)是否可以仅使用TC位中断进行传输? [此消息由以下内容编辑:jeffrey.chang168于18-12-2009 12:57] [此消息编辑:jeffrey.chang168于18-12-2009 12:58] [此消息由以下人员编辑:jeffrey.chang168于18-12-2009 17:02发表] [此消息由:jeffrey.chang168于20-12-2009 03:29编辑] 以上来自于谷歌翻译 以下为原文 I tried to use STM8S103F3 UART1 with PC COM1 port (19200 baud, Non-parity 8-bit data, 1 stop bit), but there are some data lost. void UART_Init (void) { // [2]310 UART1 INITIALIZATION // Step1) [2]346 To define the word length (M bit in UART_CR1) UART1->CR1 &= ~UART1_CR1_M; // M=0 (8 data bits) // Step2) [2]349 To define the number of stop bits in UART_CR3 UART1->CR3 &= ~UART1_CR3_STOP; // STOP[1:0]=00 (1 stop bit) // Step3) [2]316 To select the desired baud rate // 1) Baud rate = 19200 // Tx/Rx baud rate = fMASTER / UART_DIV // = (16MHz / 8) / 19200 // = 2000 / 19.2 // = 104.16 // ~= 104 = 068h UART1->BRR2 = 0x08; // 19200 Baud UART1->BRR1 = 0x06; // Step4) To enable transmitter mode (TEN bit in UART_CR2) UART1->CR2 |= UART1_CR2_TEN; // transmit enable } /* UART_Init */ u8 bUART_TxCnt; u8 *pbUART_Tx; // system transmit pointer void UART_TxByte (u8 bByte) { pbUART_Tx = &bByte; bUART_TxCnt = 1; UART1->CR2 |= UART1_CR2_TIEN; } /* UART_TxByte */ @far @interrupt void UART1_TX_IRQHandler (void) { if (bUART_TxCnt) { // Is it necessary to check the TC bit before setup new data ? UART1->DR = *pbUART_Tx++; bUART_TxCnt--; } else UART1->CR2 &= ~UART1_CR2_TIEN; } void main (void) { u8 bData; UART_Init(); enableInterrupts(); for (;;) { for (bData = '0'; bData <= '9'; bData++) UART_TxByte(bData); } /* for endless loop */ } /* main */ PC PComm utility lost some data as attachment. Did I miss anything ? Q1) What's the difference between the transmit data register empty and tramsmission complete interrupt events ? Q2) Is it necessary to check the TC bit before writing data to the UART_DR register ? Q3) Does every transmitted data generate TXE and TC interrupts ? Q4) Is it possible to use TC bit interrupt ONLY for transmission ? [ This message was edited by: jeffrey.chang168 on 18-12-2009 12:57 ] [ This message was edited by: jeffrey.chang168 on 18-12-2009 12:58 ] [ This message was edited by: jeffrey.chang168 on 18-12-2009 17:02 ] [ This message was edited by: jeffrey.chang168 on 20-12-2009 03:29 ] |
|
|
|
嗨jeffrey.chang168,
对于波特率19200(fMASTER = 16MHz)应该是: UART1-&gt; BRR2 = 0x01; // 19200波特 UART1-&gt; BRR1 = 0x34; 问候。 短剑的一种 以上来自于谷歌翻译 以下为原文 Hi jeffrey.chang168, For the baud rate 19200 (fMASTER=16MHz) should be: UART1->BRR2 = 0x01; // 19200 Baud UART1->BRR1 = 0x34; Regards. Kris |
|
|
|
我使用默认的HSI时钟源(fMASTER = 16MHz / 8)作为UART1时钟源
并参考STM8S优化示例中的UART3 57600波特示例。 1)波特= 57600 Tx / Rx波特率= fMASTER / UART_DIV =(16MHz / 8)/ 57600 = 2000 / 57.6 = 34.72 〜= 35 = 0x23 UART1-> BRR2 = 0x03; // 576200波特 UART1-&gt; BRR1 = 0x02; 所以它也是丢失的数据。 2)Baud = 19200,我试着用你的公式如下。 Tx / Rx波特率= fMASTER / UART_DIV =(16MHz)/ 19200 = 16000 / 19.2 = 833.33 〜= 833 = 0x341 UART1-&gt; BRR2 = 0x01; // 19200波特 UART1-&gt; BRR1 = 0x34; 如果BRR1 / BRR2寄存器更改为0x341,PC将接收垃圾数据! [此消息由:jeffrey.chang168于19-12-2009 01:38编辑] [此消息由以下人员编辑:jeffrey.chang168于19-12-2009 01:40发表] 以上来自于谷歌翻译 以下为原文 I used default HSI clock source (fMASTER =16MHz/8) as UART1 clock source and refer to the UART3 57600 baud example in STM8S optimized examples. 1) Baud = 57600 Tx/Rx baud rate = fMASTER / UART_DIV = (16MHz / 8) / 57600 = 2000 / 57.6 = 34.72 ~= 35 = 0x23 UART1->BRR2 = 0x03; // 576200 Baud UART1->BRR1 = 0x02; So it is also lost data. 2) Baud = 19200 and I tried to use your formula as below. Tx/Rx baud rate = fMASTER / UART_DIV = (16MHz) / 19200 = 16000 / 19.2 = 833.33 ~= 833 = 0x341 UART1->BRR2 = 0x01; // 19200 Baud UART1->BRR1 = 0x34; PC will receive garbage data if BRR1/BRR2 register are changed to 0x341 ! [ This message was edited by: jeffrey.chang168 on 19-12-2009 01:38 ] [ This message was edited by: jeffrey.chang168 on 19-12-2009 01:40 ] |
|
|
|
我试图实现UART1单字节传输,但无法完全理解RM0016文档的图110和第311页。
Q5)软件支持USART: 为什么它会自动生成Tx中断(TXE = 1)? 以上来自于谷歌翻译 以下为原文 I tried to implment UART1 Single byte transmission but can NOT fully understand the Figure 110 and page 311 of the RM0016 document. Q5) Software enables tne USART: Why does it generate an Tx Interrupt (TXE=1) automatically ? |
|
|
|
我尝试在Polloing方法中修改我的原始代码,如下所示:
void UART_TxByte(u8 bByte) { pbUART_Tx =&amp; bByte; bUART_TxCnt = 1; UART1-> DR = bByte; UART1-&gt; CR2 | = UART1_CR2_TIEN; while((UART1-&gt; SR&amp; UART1_SR_TXE)== 0) ; } / * UART_TxByte * / @far @interrupt void UART1_TX_IRQHandler(void) { UART1-&gt; CR2&amp; = ~UART1_CR2_TIEN; } 好像没事。为什么UART1中断方法不起作用? 以上来自于谷歌翻译 以下为原文 I tried to modfiy my original code in Polloing approach as below: void UART_TxByte (u8 bByte) { pbUART_Tx = &bByte; bUART_TxCnt = 1; UART1->DR = bByte; UART1->CR2 |= UART1_CR2_TIEN; while ((UART1->SR & UART1_SR_TXE) == 0) ; } /* UART_TxByte */ @far @interrupt void UART1_TX_IRQHandler (void) { UART1->CR2 &= ~UART1_CR2_TIEN; } It seems to be all right. Why doesn't the UART1 interrupt approach work ? |
|
|
|
嗨,
机箱中的示例。 问候。 短剑的一种 以上来自于谷歌翻译 以下为原文 Hi, The example in the enclosure. Regards. Kris |
|
|
|
我不知道为什么STM8S103F3 UART1难以正确使用。
有没有人有类似的经历? ST官方图书馆太复杂,无法理解。我只是想 在19600波特率,非奇偶校验,8位数据和1个停止位重复发送'0'到'9输出。 void UART_Init(void) { // [2] 310 UART1 INITIALIZATION // Step1)[2] 346定义字长(UART_CR1中的M位) UART1-&gt; CR1&amp; = ~UART1_CR1_M; // M = 0(8个数据位) // Step2)[2] 349定义UART_CR3中的停止位数 UART1-&gt; CR3&amp; = ~UART1_CR3_STOP; // STOP [1:0] = 00(1个停止位) //步骤3)[2] 316选择所需的波特率 // 1)波特率= 19200 // Tx / Rx波特率= fMASTER / UART_DIV // =(16MHz / 8)/ 19200 // = 2000 / 19.2 // = 104.16 //〜= 104 = 068h UART1-> BRR2 = 0x08; // 19200波特 UART1-&gt; BRR1 = 0x06; // 2)波特率= 57600 // Tx / Rx波特率= fMASTER / UART_DIV // =(16MHz / 8)/ 57600 // = 2000 / 57.6 // = 34.72 //〜= 35 = 023h // UART1-&gt; BRR2 = 0x03; // 57600波特 // UART1-&gt; BRR1 = 0x02; //步骤4)启用发送器模式(UART_CR2中的TEN位) UART1-> CR2 | = UART1_CR2_TEN; //传输启用 } / * UART_Init * / void UART_TxHex(u8 bHex) { u8 abHex [2]; u8 bNibble; //低半字节 bNibble = bHex&amp;为0x0F; if(bNibble&lt; 10) abHex [1] ='0'+ bNibble; 其他 abHex [1] ='A'+ bNibble - 10; //高半字节 bNibble = bHex&gt;&gt; 4; if(bNibble&lt; 10) abHex [0] ='0'+ bNibble; 其他 abHex [0] ='A'+ bNibble - 10; pbUART_Tx = abHex; // UART1-&gt; DR = * pbUART_Tx ++; // bUART_TxCnt = 1; // UART1-&gt; CR2 | = UART1_CR2_TIEN; // while((UART1-> SR&amp; UART1_SR_TXE)== 0)// ; } / * UART_TxHex * / @far @interrupt void UART1_TX_IRQHandler(void) { if(bUART_TxCnt) { UART1-&gt; DR = * pbUART_Tx ++; bUART_TxCnt--; } 其他 { //上次数据! while((UART1-> SR&amp; UART1_SR_TC)== 0) ; UART1-&gt; CR2&amp; = ~UART1_CR2_TIEN; } } 此UART1轮询方法代码仍有一些数据丢失。 Q5)在UART_Init()中使能TEN位是否正确? //步骤4)启用发送器模式(UART_CR2中的TEN位) UART1-> CR2 | = UART1_CR2_TEN; //传输启用 Q6)在检查之前启用TIEN位是否正确? UART1_SR_TXE位?是否有必要在UART_TxHex()中启用TCEN? Q7)检查UART1 TX中断服务程序中的TC位是否正确? 我们需要在UART_TxHex()中启用TCEN吗? //上次数据! while((UART1-> SR&amp; UART1_SR_TC)== 0) 有人有SIMPLE和WORKABLE UART1参考代码吗? 如果是,请与我分享。提前致谢 ! [此消息由以下内容编辑:jeffrey.chang168于21-12-2009 12:10发表] [此消息由以下内容编辑:jeffrey.chang168于21-12-2009 12:12] [此消息由以下内容编辑:jeffrey.chang168于21-12-2009 12:19] [此消息由以下内容编辑:jeffrey.chang168于21-12-2009 12:22] 以上来自于谷歌翻译 以下为原文 I do NOT know why the STM8S103F3 UART1 is so diffcult to use correctly. Does Anybody have similar experience ? The ST offical library is too complex to understand. I just wanted to send '0' to '9 out in 19600 baud, Non-parity, 8-bit data and 1 Stop bit repeatly. void UART_Init (void) { // [2]310 UART1 INITIALIZATION // Step1) [2]346 To define the word length (M bit in UART_CR1) UART1->CR1 &= ~UART1_CR1_M; // M=0 (8 data bits) // Step2) [2]349 To define the number of stop bits in UART_CR3 UART1->CR3 &= ~UART1_CR3_STOP; // STOP[1:0]=00 (1 stop bit) // Step3) [2]316 To select the desired baud rate // 1) Baud rate = 19200 // Tx/Rx baud rate = fMASTER / UART_DIV // = (16MHz / 8) / 19200 // = 2000 / 19.2 // = 104.16 // ~= 104 = 068h UART1->BRR2 = 0x08; // 19200 Baud UART1->BRR1 = 0x06; // 2) Baud rate = 57600 // Tx/Rx baud rate = fMASTER / UART_DIV // = (16MHz / 8) / 57600 // = 2000 / 57.6 // = 34.72 // ~= 35 = 023h //UART1->BRR2 = 0x03; // 57600 Baud //UART1->BRR1 = 0x02; // Step4) To enable transmitter mode (TEN bit in UART_CR2) UART1->CR2 |= UART1_CR2_TEN; // transmit enable } /* UART_Init */ void UART_TxHex (u8 bHex) { u8 abHex[ 2 ]; u8 bNibble; // Low Nibble bNibble = bHex & 0x0F; if (bNibble < 10) abHex[ 1 ] = '0' + bNibble; else abHex[ 1 ] = 'A' + bNibble - 10; // High Nibble bNibble = bHex >> 4; if (bNibble < 10) abHex[ 0 ] = '0' + bNibble; else abHex[ 0 ] = 'A' + bNibble - 10; pbUART_Tx = abHex; // UART1->DR = *pbUART_Tx++; // bUART_TxCnt = 1; // UART1->CR2 |= UART1_CR2_TIEN; // while ((UART1->SR & UART1_SR_TXE) == 0) // ; } /* UART_TxHex */ @far @interrupt void UART1_TX_IRQHandler (void) { if (bUART_TxCnt) { UART1->DR = *pbUART_Tx++; bUART_TxCnt--; } else { // Last data ! while ((UART1->SR & UART1_SR_TC) == 0) ; UART1->CR2 &= ~UART1_CR2_TIEN; } } This UART1 polling approach code still has some data lost. Q5) Is it correct to enable TEN bit in UART_Init() ? // Step4) To enable transmitter mode (TEN bit in UART_CR2) UART1->CR2 |= UART1_CR2_TEN; // transmit enable Q6) Is it correct sequence to enable TIEN bit before checking UART1_SR_TXE bit ? Is it necessary to enable TCEN in UART_TxHex() ? Q7) Is it correct to check TC bit in UART1 TX Interrupt Service Routine ? Do we need to enable TCEN in UART_TxHex() ? // Last data ! while ((UART1->SR & UART1_SR_TC) == 0) Does anybody have a SIMPLE and WORKABLE UART1 reference code ? If yes, please share it with me. Thanks in advance ! [ This message was edited by: jeffrey.chang168 on 21-12-2009 12:10 ] [ This message was edited by: jeffrey.chang168 on 21-12-2009 12:12 ] [ This message was edited by: jeffrey.chang168 on 21-12-2009 12:19 ] [ This message was edited by: jeffrey.chang168 on 21-12-2009 12:22 ] |
|
|
|
我花了很多时间来理解ST STM8S103F3库,并尝试了一个尝试错误的过程来研究STM8S103 MCU。但我感到沮丧。
到目前为止,我还不知道为什么我们需要在UART中断服务程序(ISR)中等待TXE位。如果我们不检查TXE位,则很少会丢失数据。 如果有必要,UART轮询和中断方法之间有什么区别?在将数据写入UART-> DR寄存器之后,STM8S将浪费时间等待TXE = 1。它缩小了轮询和中断方法之间的差距。对 ? / * ---------------- 名称:UART_TxByte - 目的:等待发送一个字节数据。 通过:无。 返回:无。 笔记: ---------------- * / void UART_TxByte(u8 bByte) { #if(UART_TX_INTERRUPT) bUART_TxCnt = 0; UART1-> DR = bByte; //清除TXE位 // [2] 347发送器中断使能 UART1-&gt; CR2 | = UART1_CR2_TIEN; while((UART1-&gt; SR&amp; UART1_SR_TXE)== 0) ; #其他 UART1-> DR = bByte; //清除TXE位 while((UART1-&gt; SR&amp; UART1_SR_TXE)== 0) ; // [2] 310避免上次数据传输校正! while((UART1-> SR&amp; UART1_SR_TC)== 0) ; #万一 } / * UART_TxByte * / / * ---------------- 名称:UART1_TX_IRQHandler - UART1 TX ISR。 目的: 通过:无。 返回:无。 笔记: ---------------- * / @far @interrupt void UART1_TX_IRQHandler(void) { #if(UART_TX_INTERRUPT) if(bUART_TxCnt) { UART1-&gt; DR = * pbUART_Tx ++; //清除TXE位 bUART_TxCnt--; // [2] 311等到TXE = 1 while((UART1-&gt; SR&amp; UART1_SR_TXE)== 0) ; } 其他 { // [2] 310避免上次数据传输校正! while((UART1-> SR&amp; UART1_SR_TC)== 0) ; // [2] 347发送器中断禁用 UART1-&gt; CR2&amp; = ~UART1_CR2_TIEN; } #万一 } [此消息由:jeffrey.chang168编辑于2009年12月27日10:37] 以上来自于谷歌翻译 以下为原文 I spent lots of time to understand ST STM8S103F3 Library and did try-and-error process to investigate the STM8S103 MCU. But I feel frustrated. So far, I did NOT still know why we need to wait TXE bit in UART interrupt service routine (ISR). It results in data lost seldom if we do NOT check the TXE bit. What's the difference between UART Polling and Interrupt approach if it is necessary ? The STM8S will waste time to wait until TXE=1 after writing data to UART->DR register. It reduces the gap between Polling and Interrupt approach. Right ? /* ---------------- Name: UART_TxByte - Purpose: Wait to send one byte data out. Passed: None. Returns: None. Notes: ---------------- */ void UART_TxByte (u8 bByte) { #if (UART_TX_INTERRUPT) bUART_TxCnt = 0; UART1->DR = bByte; // Clear TXE bit // [2]347 Transmitter Interrupt Enable UART1->CR2 |= UART1_CR2_TIEN; while ((UART1->SR & UART1_SR_TXE) == 0) ; #else UART1->DR = bByte; // Clear TXE bit while ((UART1->SR & UART1_SR_TXE) == 0) ; // [2]310 To avoid last data transmission correction ! while ((UART1->SR & UART1_SR_TC) == 0) ; #endif } /* UART_TxByte */ /* ---------------- Name: UART1_TX_IRQHandler - UART1 TX ISR. Purpose: Passed: None. Returns: None. Notes: ---------------- */ @far @interrupt void UART1_TX_IRQHandler (void) { #if (UART_TX_INTERRUPT) if (bUART_TxCnt) { UART1->DR = *pbUART_Tx++; // Clear TXE bit bUART_TxCnt--; // [2]311 To wait until TXE = 1 while ((UART1->SR & UART1_SR_TXE) == 0) ; } else { // [2]310 To avoid last data transmission correction ! while ((UART1->SR & UART1_SR_TC) == 0) ; // [2]347 Transmitter Interrupt disable UART1->CR2 &= ~UART1_CR2_TIEN; } #endif } [ This message was edited by: jeffrey.chang168 on 27-12-2009 10:37 ] |
|
|
|
杰弗里嗨,
当TDR寄存器的内容已传输到移位寄存器时,TXE标志由硬件置1,您需要在发送下一个TC标志之前等待TC标志。 互联网上提供了新的参考手册(RM0016)版本,请参见图110.发送第311页时的TC / TXE行为。 问候 mozra 以上来自于谷歌翻译 以下为原文 Hi Jeffrey, The TXE flag is set by hardware when the content of the TDR register has been transferred into the shift register and you need to wait on the TC flag before sending the next. A new reference manual (RM0016) version is available on internet refer to Figure 110. TC/TXE behavior when transmitting page 311. Regards mozra |
|
|
|
当TDR寄存器的内容已经传输到移位寄存器并且您需要在发送下一个TC标志之前等待TC标志时,TXE标志由硬件置位是正确的。在发送下一个TC标志之前等待TC标志需要花费大量时间。 STM8S UART应用程序中的POLLING和INTERRUPT方法有什么区别?
在新参考手册(RM0016 Rev. 6)的第311页,它提到''在UART_DR寄存器中写入最后数据后,必须等到TC设置为'1'才能进入HALT模式或禁用UART。''我无法完全理解STM8S参考手册。 我建议ST STM8S FAE团队为客户开发REAL和NEAT库。目前的一个太复杂,客户应用程序。 [此消息由:boltnut168于10-01-2010 16:43编辑] 以上来自于谷歌翻译 以下为原文 It is TRUE that the TXE flag is set by hardware when the content of the TDR register has been transferred into the shift register and you need to wait on the TC flag before sending the next. It takes MOST of time to wait the TC flag before sending the next. What's the difference between POLLING and INTERRUPT approachs in STM8S UART application ? At the page 311 of the new reference manual (RM0016 Rev. 6), it mentions that ''After writing the LAST data in the UART_DR register, it is mandatory to wait until TC is set to '1' before entering HALT mode or disabling the UART.'' I can NOT fully understand the STM8S reference manual. I suggest ST STM8S FAE team to develop REAL and NEAT library for customers. Current one is too complex to customer applicatoins. [ This message was edited by: boltnut168 on 10-01-2010 16:43 ] |
|
|
|
引用:
STM8S UART应用程序中的POLLING和INTERRUPT方法有什么区别? 与任何其他微控制器的UART应用程序相同?! 引用: 我建议ST STM8S FAE团队为客户开发REAL和NEAT库。目前的一个太复杂,客户应用程序。 这听起来很像,''我想要一个特定于我的应用程序的库,而没有其他客户可能需要的任何其他选项'' 显然,ST必须迎合最广泛的受众 - 您不能期望通用库中针对您的特定需求而优化的东西! 以上来自于谷歌翻译 以下为原文 Quote: What's the difference between POLLING and INTERRUPT approachs in STM8S UART application ? Same as in any other microcontroller's UART application?! Quote: I suggest ST STM8S FAE team to develop REAL and NEAT library for customers. Current one is too complex to customer applicatoins. That sounds rather like, ''I want a library that's specific to my application without any other options that other customers may require'' Clearly, ST have to cater for the broadest audience - you can't expect something optimised to your specific requirements from a general-purpose library! |
|
|
|
亲爱的st7,
我知道ST不能给我一个与我的应用程序类似的特定库。但是我希望ST可以提供一个自我内容的文档和有用的库。 我和8051 MCU合作了很长时间。所以我预计STM8S MCU至少可以很容易地用作8051。我花了很多时间研究STM8S参考手册并做了一些实验来澄清一些疑点。 我相信ST可以做得更好。对 ? 以上来自于谷歌翻译 以下为原文 Dear st7, I understand that ST can NOT give me a specific library as similar as my application. But I HOPE that ST can provide a self-content document and useful library. I worked with 8051 MCU for a long time. So I expected the STM8S MCU is easy to use as 8051 at least. I took lots of time to study STM8S reference manual and do some experiment to clarify some doubtful points. I believe that ST can do better. Right ? |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2715 浏览 1 评论
3235 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1807 浏览 1 评论
3643 浏览 6 评论
6031 浏览 21 评论
1333浏览 4评论
207浏览 3评论
195浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
348浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
440浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 15:52 , Processed in 1.621813 second(s), Total 99, Slave 83 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号