我用的是IAR编译环境,单片机是STM8S105C4T6,但是在时钟初始化中,
CLK__CKDIVR=0x00;这句中的CLK__CKDIVR一直提示找不到这个函数;
并且在串口UART1初始化时也是一样。头文件用的是stm8s.h和stm8s_uart1.h
想问一下这是什么原因
STM8S时钟和串口初始化问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- syxarm 2014-12-11 08:31关注
我使用的是stm8s003。应该是差不多的。
不知道你有没有实行官方的固件库,固件库里的写法是CLK->CKDIVR。
固件库里的串口配置函数直接配置是可以使用的。
static void CLK_Config(void)
{
CLK_DeInit();
CLK_HSICmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); //hsi/2 =8M
CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //fmaster = hsi /hsi分频比
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //fcpu = fmaster/分频比// CLK_FastHaltWakeUpCmd(ENABLE); // GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_HIGH_FAST); // CLK_CCOConfig(CLK_OUTPUT_MASTER); close_all_peripheralClock();
}
void UART_Config(void)
{
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART1, ENABLE);
UART1_DeInit();
#if 0
UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);/* Enable UART1 Transmit interrupt*/ UART1_ITConfig(UART1_IT_TC, ENABLE); BSP_IntVectSet(BSP_INT_ID_UART1_T,UART1_TX_hdl); #else UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE); /* Enable UART1 Transmit interrupt*/
// UART1_ITConfig(UART1_IT_RXNE, ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
BSP_IntVectSet(BSP_INT_ID_UART1_R,UART1_RX_hdl);#endif enableInterrupts();
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?