/* MAIN.C file * * Copyright (c) 2002-2005 STMicroelectronics */ #include "stm8s_clk.h" #include "stm8s_gpio.h" #include "stm8s_uart1.h" #include "stm8s.h" #include <string.h> void Init(void); void Uart1Send8String(u8 *pStr,u8 length); void delayMs(u32 ms){ u32 count =1000; for(;ms>0;ms--){ for(;count>0;count--){ _asm("nop"); } } } void Uart1Send8String(u8 *pStr,u8 length){ u8 i; for(i=0;i<length;i++){ while(UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET); UART1_SendData8(pStr); delayMs(100); } } void Init(void){ CLK_DeInit(); CLK_HSICmd(ENABLE); CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);//16MHz 8分频为2MHz CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE); delayMs(100); //GPIO初始化 GPIO_DeInit(GPIOD); GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOC); GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //USART1_TX-PD5 GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT); //USART1_RX-PD6 UART1_DeInit(); UART1_IrDAConfig(UART1_IRDAMODE_NORMAL); UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, \ UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); UART1_Cmd(ENABLE); } void main(void) { u8 str[] = "fuck you!!!!"; Init(); while(1){ Uart1Send8String(str,strlen(str)); delayMs(100000); } } 使用的编译器STVD 和 STM8 Cosmic 得到的结果如下: 串å£å®éªçç»æ 我测量的方法是:TX和RX空载,连接到R232 在连接电脑端。 是不是我该怀疑电路板有问题了呢。 |
STMS005K6T6 如何采集内部参考电压。
stm8s003 adc中断和通道切换的问题
adc施密特触发器stm8
stm8l051f3 TSSOP20 封装,待机模式下,2天后,电流突然增加到140UA
STM8S用STVP烧录怎么加密?
如何使用ST官网例程_LIN总线通讯_STM8AF
STM8 LIN
IAR代码编辑太费劲了,想问一下有没有好的方法,试了VScode但是头文件老是报错,调了很久也没调好,想换个方法了。
想问一下各位大佬,IAR下载调试代码时出现 warning: is an illegal data sample expression IAR是什么意思啊?
STM8S标准库TIM1编码器功能不计数,请大师帮我看看
void myCLK_Init(void){
CLK->ECKR=0x00; // 禁用外部时钟
CLK->ICKR=0x01; //使能内部时钟
CLK->CMSR=0xe1; // HSI selected as master clock source
CLK->SWR= 0xe1; //HSI selected as master clock source
CLK->CKDIVR=0x18;//Bits 4:3 11: fHSI= fHSI RC output/8 Bits 2:0 000: fCPU=fMASTER
CLK->PCKENR1 = CLK->PCKENR1|0xc0;// UART1 CLK
}
//8bit data, 1 stiopbit, 无优先级,无流控,无DTR,无DTS
void myUART1_Init(void)
{
UART1->CR2=0x00;//使发送禁用TEN=0;
UART1->CR1=0x00;//设置M字长,8位数据位
UART1->CR3=0x00;//1位停止位
UART1->BRR2=0x00;//000d: 9600(fcp u=fmaster=2MHz) 必须先写BR2
UART1->BRR1=0x0d;//20000 /96 =0x000d
UART1->CR2=0x2C; //
}
void GInterruptSW(FunctionalState state){
if(state == ENABLE){
_asm("RIM");
}else{
_asm("SIM");
}
}
深深的怀疑内建晶振不能用于uart!!!
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOC);这两个干嘛的 不知道
还有个问题 接收中断呢 好好看看自己的程序 不要怀疑芯片
问题来了!示波器测量,以及串口打印都有问题。何解?单步调试,寄存器值均没有问题。为何串口数据确是不对的!