完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
各位朋友,我现在做一个DMX512的发送程序,用STM8串口做的,现在遇到问题,不知道如何使的TXD 输出低电平,88us,如果单纯的设置TXD为推挽输出和开漏输出,应该会影响后面的串口使用吧?如何操作呢?用51的话我知道很简单 TXD=0;delay88us();就ok 了,现在用STM8怎么操作呢?大神帮忙指点一下,
|
|
相关推荐
2个回答
|
|
设置为普通IO口,拉低88us
|
|
|
|
在STM8微控制器上实现DMX512发送程序并使TXD输出低电平,可以通过以下步骤进行操作:
1. 初始化串口:首先,需要初始化STM8的串口以满足DMX512协议的要求。DMX512协议要求波特率为250kbps,数据格式为1个起始位、8个数据位、1个奇偶校验位和2个停止位。 ```c void USART_Init(void) { // 设置波特率 CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE); USART1_BaudRate = 250000; USART1_Mode = USART_Mode_Synchronous; USART1_WordLength = USART_WordLength_8D; USART1_StopBits = USART_StopBits_2; USART1_Parity = USART_Parity_Even; USART1_SyncMode = USART_SyncMode_Slave; USART1_ClockPolarity = USART_ClockPolarity_Low; USART1_ClockPhase = USART_ClockPhase_1Edge; USART1_GuardTime = 0; USART1_NACKState = USART_NACKState_Enable; USART1_ReceiverState = USART_ReceiverState_Disable; USART1_TransmitterState = USART_TransmitterState_Enable; USART1_Clock = USART_Clock_Disable; USART1_DmaMode = USART_DmaMode_Disable; USART1_IrDAMode = USART_IrDAMode_Disable; USART1_SmartCardMode = USART_SmartCardMode_Disable; USART1_OverSampling8 = USART_OverSampling8_Enable; USART_Cmd(ENABLE); } ``` 2. 配置GPIO:将TXD引脚配置为开漏输出,以便在需要时可以将其拉低。 ```c void GPIO_Config(void) { // 配置TXD为开漏输出 GPIO_Init(GPIOx, GPIO_Pin_Source, GPIO_Mode_Out_OD_Low_Fast); } ``` 3. 输出低电平:要使TXD输出低电平,可以通过将TXD引脚的GPIO寄存器设置为0。 ```c void TXD_Low(void) { GPIO_WriteBit(GPIOx, GPIO_Pin_Source, Bit_RESET); } ``` 4. 延时:在STM8中,可以使用循环来实现延时。例如,要实现88us的延时,可以使用以下代码: ```c void Delay88us(void) { volatile uint32_t i, j; for (i = 0; i < 88; i++) for (j = 0; j < 120; j++); } ``` 5. 将上述步骤组合:在发送DMX512数据时,可以在发送数据前调用`TXD_Low()`函数,然后调用`Delay88us()`函数实现88us的延时。 ```c void Send_DMX512_Data(uint8_t data) { USART_SendData(USART1, data); while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); TXD_Low(); Delay88us(); // 继续发送其他数据... } ``` 通过以上步骤,您可以在STM8微控制器上实现DMX512发送程序,并使TXD输出低电平。请注意,这里的GPIO配置和延时函数可能需要根据您的具体硬件和时钟配置进行调整。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 10:17 , Processed in 0.715737 second(s), Total 85, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号